主要内容 #
-
- 主函数模块
1.主函数模块 #
主函数主要为一个循环函数:
实现功能如下:
1.当得分是50的倍数时修改level;
2.实例化金币,让金币从不同位置掉落;
3.实例化小人,通过键盘的左右按键来控制小人的移动;
4.判断金币是否着地,一但着地,游戏结束;
5.判断金币是否与小人碰撞,如果碰撞表示小人接到金币,得分加5。
程序的主函数部分代码如下,之前添加的部分在这部分也清晰展示:
def main(): drawback() levelnum = 1 # level scorenum = 0 # 得分 highscore = gethighscore() # 最高分 ileft = 1 # 记录向左移动步数,用来控制图片 iright = 10 # 记录向右移动步数,用来控制图片 x = 100 y = 450 filename = 'image\\1.png' backimg_ren = PeopleRect(filename, [x, y]) # 实例化小人类 backscreen.blit(backimg_ren.image, backimg_ren.rect) loadtext(levelnum, scorenum, highscore) goldx = random.randint(50, 580) speed = [0, levelnum] mygold = GoldRect([goldx, 100], speed) # 实例化金币类 pygame.display.update() while True: if scorenum > 0 and scorenum / 50.0 == int(scorenum / 50.0): # 当得分是50的倍数时修改level levelnum = scorenum / 50 + 1 speed = [0, levelnum] for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() pressed_keys = pygame.key.get_pressed() if pressed_keys[pygame.K_LEFT]: # 按下左键 drawback() # 加载背景图片函数 loadtext(levelnum, scorenum, highscore) # 绘出level关数、得分和历史最高得分 if iright > 14: iright = 10 # 控制小人类,加载不同的图片实现小人的移动 iright = iright + 1 filename = 'image\\' + str(iright) + '.png' if x < 50: x = 50 else: x = x - 10 backimg_surface = PeopleRect(filename, [x, y]) backscreen.blit(backimg_surface.image, backimg_surface.rect) if pressed_keys[pygame.K_RIGHT]: # 按下右键 drawback() loadtext(levelnum, scorenum, highscore) if ileft > 4: ileft = 0 # 功能同按下左键类似 ileft = ileft + 1 filename = 'image\\' + str(ileft) + '.png' if x > 560: x = 560 else: x = x + 10 backimg_surface = PeopleRect(filename, [x, y]) backscreen.blit(backimg_surface.image, backimg_surface.rect) drawback() loadtext(levelnum, scorenum, highscore) mygold.move() # 金币移动,使用金币类 backscreen.blit(mygold.image, mygold.rect) backimg_surface = PeopleRect(filename, [x, y]) backscreen.blit(backimg_surface.image, backimg_surface.rect) if mygold.rect.top > 600: # 判断金币是否着地,一但着地,游戏结束 loadgameover(scorenum, highscore) if mygold.rect.colliderect(backimg_surface.rect): # 判断金币是否与小人碰撞,如果碰撞表示小人接到金币 scorenum += 5 # 接到一个金币得分加5 loadtext(levelnum, scorenum, highscore) goldx = random.randint(50, 580) # 金币掉落位置随机 mygold = GoldRect([goldx, 100], speed) # 金币实例化,speed与level相关。 pygame.display.update()
将以上所有代码加入到上一课创建的项目文件中(该代码请覆盖原来的main()函数),运行,即为最终的接金币8游戏。
至此完成了接金币游戏所有的代码部分,后面还请大家尝试修改代码将金币掉落速度提升等操作去理解代码。
小结 #
- 本节主要介绍了接金币游戏所需的主函数部分设计思想和代码介绍,至此接金币游戏开发完成。