飞机大战项目梳理(一)

拼搏现实的明天。 2022-12-11 15:25 329阅读 0赞

尽力而为和志在必得还是有点差别的。

一、思路梳理

今天的内容:建立一个空白的窗口,在这个窗口里需要有一个小飞机(图片),小飞机可以根据用户按键向右或向左移动。

“建立窗口” 就需要一些参数:窗口宽高,窗口上方的名字,窗口颜色、如何退出窗口

“引入小飞船” 就需要写明:图片存储位置、图片在窗口的位置、图片颜色、图片大小

“根据按键左右移动” 需要写明:移动的距离、检测到按键动作、移动的范围

流程总结:先写粗糙的大块文件——>再加一个功能——>测试——>再加一个功能——>测试——>代码优化。

不断的迭代这个过程 ,就写出来了。

二、基本操作代码梳理

先要了解一些我们要用的基本操作代码

需要引入的包:pygame sys

初始化游戏:pygame.ihit()

创建一个屏幕对象:

  1. 屏幕大小——screen = pygame.display.set_mode((800,800))
  2. 窗口名字——pygame.display.set_caption(“Alien invasion”)
  3. 窗口颜色——screen. fil( bg_color ) bg_color=(a ,b ,c )

监视鼠标事件:

  1. 得到事件:for event in pygame.event.get()
  2. 退出:if event.type==pygame.QUIT :sys.exit()
  3. 如果是按键: If event.tpye==pygame.KEYDOWN
  4. 如果是按键抬起:if event.type==pygame.KEYUP
  5. 如果是按向左键: if event.type==pygame.K_LEFT
  6. 如果是按向右键:if event.tpye==pygame.K_RIGHT

其它细小的操作代码:

加载飞船图像:image=pygame.image.load(‘//‘)

获取飞船的外接矩形:rect=self.image.get_rect()

飞船的位置设置:self.rect.centerx=self.screen_rect.centerx self.rect.bottom=self.screen_rect.bottom

把飞船放在设置好的位置上: self.screen.blit ( self.image,self.rect )

三、代码块

运行的代码文件只有一个,其它作为配置引入 。

运行的文件为alien_invasion.py,它里面是对下面那些文件的调用

setting.py中写的是窗口的设置,比如大小、颜色

ship.py中写的是小飞船的位置、大小、移动速度。

game_function.py中写的是用到的函数,比如监测事件并响应。

下面附上代码:

  1. #alien_invasion.py
  2. import sys
  3. import pygame
  4. from setting import Setting
  5. import game_function as gf
  6. from ship import Ship
  7. def run_game():
  8. pygame.init()
  9. ai_settings=Setting()
  10. screen=pygame.display.set_mode((ai_setting.screen_width,ai_setting.screen_height))
  11. ship=Ship(screen)
  12. while True:
  13. gf.check_event(ship)
  14. ship.update()
  15. gf.update_screen(ai_setting,screen,ship)
  16. run_game()
  17. #setting.py
  18. import sys
  19. import pygame
  20. class Setting():
  21. def __init__(self):
  22. self.screen_width=500
  23. self.screen_height=500
  24. self.bg_color=(230,230,230)
  25. self.ship_speed_factor=1.5
  26. #ship.py
  27. import sys
  28. import pygame
  29. from setting import Setting
  30. class Ship():
  31. def __init__(self,screen):
  32. self.ai_setting=Setting()
  33. self.screen=screen
  34. self.image=pygame.image.load('image/ship.bmp')
  35. self.rect=self.image.get_rect()
  36. self.screen_rect=screen.get_rect()
  37. self.moving_right=False
  38. self.moving_left=False
  39. self.rect.centerx=self.screen_rect.centerx
  40. self.rect.bottom=self.screen_rect.bottom
  41. self.center=float(self.rect.centerx)
  42. def blitme(self):
  43. self.screen.blit(self.image,self.rect)
  44. def update(self):
  45. if self.moving_right and self.rect.right<self.screen_rect.right:
  46. self.center+=self.ai_setting.ship_speed_factor
  47. elif self.moving_left and self.rect.left>0:
  48. self.center-=self.ai_setting.ship_speed_factor
  49. self.rect.centerx=self.center
  50. #game_function.py
  51. import sys
  52. import pygame
  53. def check_keydown_event(event,ship):
  54. if event.key==K_RIGHT:
  55. ship.moving_right=True
  56. elif event.key==K_LIFT:
  57. ship.moving_left=True
  58. def check_keyup_event(event,ship)
  59. if event.key==K_RIGHT:
  60. ship.moving_right=False
  61. elif event.key==K_LIFT:
  62. ship.moving_left=False
  63. def check_events(ship):
  64. for event in pygame.event.get*(:
  65. if event.type==pygame.QUIT:
  66. sys.exit()
  67. elif event.type==pygame.KEYDOWN:
  68. check_keydown_event(event,ship)
  69. elif event.type==pygame.KEYUP
  70. check_keyup_event(event,ship)
  71. def update_screen(ai_setting,screen,ship):
  72. screen.fill(ai_setting.bg_color)
  73. ship.blitme()
  74. pygame.display.flip()

发表评论

表情:
评论列表 (有 0 条评论,329人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java飞机大战项目

    飞机大战游戏是一款十分有趣的射击类小游戏,流畅的画面,高难度的挑战。游戏中,玩家驾驶英雄机,在空中进行战斗。点击并移动自己的英雄机,发射炮弹,打掉敌飞机以及蜜蜂,来获得分数和奖