python赛车小游戏,
如今的游戏可谓层出不穷,但边肖发现赛车类游戏也很受大家欢迎,比如卡丁车、QQ赛车,还有主机游戏极品飞车系列。本文将利用Python中的Pygame模块制作一个简单的赛车游戏,有兴趣的可以看看。
00-1010简介1。环境安装1。运行环境2。物质环境2。代码显示3。效果显示游戏开始3354游戏界面3354游戏结束3354
目录
朋友们好~
现在的游戏层出不穷,NBA 2K系列,FIFA系列,都在经典之列。然而,边肖发现赛车游戏也很受欢迎,如卡丁车,QQ赛车,以及主机游戏极品飞车系列。
咳咳,咳咳.当时的边肖主要是来自颜值!的最喜欢的角色
赛车游戏通常以各种模型、各种赛道和身临其境的真实感吸引众多玩家。在游戏中,玩家需要驾驶各种赛车环游世界,享受肾上腺素飙升的快感。
然后,用代码为边肖写一个《赛车CAR》小游戏。让我们来看看。
导语
一、环境安装
本文使用的运行环境:Python3.7,Pycharm社区版2021,Pygame游戏模块,部分自带模块,不需要安装直接导入。
设置:pip install-I https://pypi.douban.com/simple/模块名称
1)运行环境
背景图片等。
2)素材环境
导入游戏,随机,系统,操作系统,时间
从pygame.locals导入*
窗口宽度=800
窗口高度=600
TEXTCOLOR=(255,255,255)
BACKGROUNDCOLOR=(0,0,0)
FPS=40
BADDIEMINSIZE=10
BADDIEMAXSIZE=40
BADDIEMINSPEED=8
BADDIEMAXSPEED=8
ADDNEWBADDIERATE=6
PLAYERMOVERATE=5
计数=3
def terminate():
pygame.quit()
sys.exit()
def waitForPlayerToPressKey():
而True:
用于pygame.event.get():中的事件
if event.type==QUIT:
终止()
if event.type==KEYDOWN:
if event . key==K _ escape : # escape退出
终止()
返回
def player hashit baddie(player rect,baddies):
对于baddies:中的b
if player rect . colliderect(b[ rect ]):
返回True
返回False
def drawText(文本,字体,表面,x,y):
textobj=font.render(text,1,TEXTCOLOR)
textrect=textobj.get_rect()
textrect.topleft=(x,y)
surface.blit(textobj,textrect)
#设置pygame、窗口和鼠标光标
pygame.init()
m
ainClock = pygame.time.Clock()
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption(car 赛车游戏)
pygame.mouse.set_visible(False)
# fonts
font = pygame.font.SysFont(None, 30)
# sounds
gameOverSound = pygame.mixer.Sound(music/crash.wav)
pygame.mixer.music.load(music/car.wav)
laugh = pygame.mixer.Sound(music/laugh.wav)
# images
playerImage = pygame.image.load(image/car1.png)
car3 = pygame.image.load(image/car3.png)
car4 = pygame.image.load(image/car4.png)
playerRect = playerImage.get_rect()
baddieImage = pygame.image.load(image/car2.png)
sample = [car3,car4,baddieImage]
wallLeft = pygame.image.load(image/left.png)
wallRight = pygame.image.load(image/right.png)
# "Start" screen
drawText(Press any key to start the game., font, windowSurface, (WINDOWWIDTH / 3) - 30, (WINDOWHEIGHT / 3))
drawText(And Enjoy, font, windowSurface, (WINDOWWIDTH / 3), (WINDOWHEIGHT / 3)+30)
pygame.display.update()
waitForPlayerToPressKey()
zero=0
if not os.path.exists("data/save.dat"):
f=open("data/save.dat",w)
f.write(str(zero))
f.close()
v=open("data/save.dat",r)
topScore = int(v.readline())
v.close()
while (count>0):
# start of the game
baddies = []
score = 0
playerRect.topleft = (WINDOWWIDTH / 2, WINDOWHEIGHT - 50)
moveLeft = moveRight = moveUp = moveDown = False
reverseCheat = slowCheat = False
baddieAddCounter = 0
pygame.mixer.music.play(-1, 0.0)
while True: # the game loop
score += 1 # increase score
for event in pygame.event.get():
if event.type == QUIT:
terminate()
if event.type == KEYDOWN:
if event.key == ord(z):
reverseCheat = True
if event.key == ord(x):
slowCheat = True
if event.key == K_LEFT or event.key == ord(a):
moveRight = False
moveLeft = True
if event.key == K_RIGHT or event.key == ord(d):
moveLeft = False
moveRight = True
if event.key == K_UP or event.key == ord(w):
moveDown = False
moveUp = True
if event.key == K_DOWN or event.key == ord(s):
moveUp = False
moveDown = True
if event.type == KEYUP:
if event.key == ord(z):
reverseCheat = False
score = 0
if event.key == ord(x):
slowCheat = False
score = 0
if event.key == K_ESCAPE:
terminate()
if event.key == K_LEFT or event.key == ord(a):
moveLeft = False
if event.key == K_RIGHT or event.key == ord(d):
moveRight = False
if event.key == K_UP or event.key == ord(w):
moveUp = False
if event.key == K_DOWN or event.key == ord(s):
moveDown = False
# Add new baddies at the top of the screen
if not reverseCheat and not slowCheat:
baddieAddCounter += 1
if baddieAddCounter == ADDNEWBADDIERATE:
baddieAddCounter = 0
baddieSize =30
newBaddie = {rect: pygame.Rect(random.randint(140, 485), 0 - baddieSize, 23, 47),
speed: random.randint(BADDIEMINSPEED, BADDIEMAXSPEED),
surface:pygame.transform.scale(random.choice(sample), (23, 47)),
}
baddies.append(newBaddie)
sideLeft= {rect: pygame.Rect(0,0,126,600),
speed: random.randint(BADDIEMINSPEED, BADDIEMAXSPEED),
surface:pygame.transform.scale(wallLeft, (126, 599)),
}
baddies.append(sideLeft)
sideRight= {rect: pygame.Rect(497,0,303,600),
speed: random.randint(BADDIEMINSPEED, BADDIEMAXSPEED),
surface:pygame.transform.scale(wallRight, (303, 599)),
}
baddies.append(sideRight)
# Move the player around.
if moveLeft and playerRect.left > 0:
playerRect.move_ip(-1 * PLAYERMOVERATE, 0)
if moveRight and playerRect.right < WINDOWWIDTH:
playerRect.move_ip(PLAYERMOVERATE, 0)
if moveUp and playerRect.top > 0:
playerRect.move_ip(0, -1 * PLAYERMOVERATE)
if moveDown and playerRect.bottom < WINDOWHEIGHT:
playerRect.move_ip(0, PLAYERMOVERATE)
for b in baddies:
if not reverseCheat and not slowCheat:
b[rect].move_ip(0, b[speed])
elif reverseCheat:
b[rect].move_ip(0, -5)
elif slowCheat:
b[rect].move_ip(0, 1)
for b in baddies[:]:
if b[rect].top > WINDOWHEIGHT:
baddies.remove(b)
# Draw the game world on the window.
windowSurface.fill(BACKGROUNDCOLOR)
# Draw the score and top score.
drawText(Score: %s % (score), font, windowSurface, 128, 0)
drawText(Top Score: %s % (topScore), font, windowSurface,128, 20)
drawText(Rest Life: %s % (count), font, windowSurface,128, 40)
windowSurface.blit(playerImage, playerRect)
for b in baddies:
windowSurface.blit(b[surface], b[rect])
pygame.display.update()
# Check if any of the car have hit the player.
if playerHasHitBaddie(playerRect, baddies):
if score > topScore:
g=open("data/save.dat",w)
g.write(str(score))
g.close()
topScore = score
break
mainClock.tick(FPS)
# "Game Over" screen.
pygame.mixer.music.stop()
count=count-1
gameOverSound.play()
time.sleep(1)
if (count==0):
laugh.play()
drawText(Game over, font, windowSurface, (WINDOWWIDTH / 3), (WINDOWHEIGHT / 3))
drawText(Press any key to play again., font, windowSurface, (WINDOWWIDTH / 3) - 80, (WINDOWHEIGHT / 3) + 30)
pygame.display.update()
time.sleep(2)
waitForPlayerToPressKey()
count=3
gameOverSound.stop()
三、效果展示
每个赛车游戏生命值三条消耗完即游戏结束。躲避相应的车子会加分。方向键左右即是移动键。
游戏开始——
游戏界面——
游戏结束——
到此这篇关于Python Pygame实战之赛车游戏的实现的文章就介绍到这了,更多相关Python Pygame赛车游戏内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。