1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > -10-19。小白自学:飞机大战源码改造。(新手入门 学习总结。从零开始 步步为营

-10-19。小白自学:飞机大战源码改造。(新手入门 学习总结。从零开始 步步为营

时间:2022-04-13 21:15:09

相关推荐

-10-19。小白自学:飞机大战源码改造。(新手入门 学习总结。从零开始 步步为营

#简介:

#小白自学:飞机大战源码改造。(新手入门,学习总结。)

#从零开始:完全重写代码框架。(步步为营,完整代码。)

#简单就好:删除各种自定函数。(讨厌函数跳转,喜欢层次分明。)

#文本归一:方便编辑搜索调试。(讨厌多个文件,喜欢唯一文本。)

#目录:(代码末尾,编辑指令:Main3_13() 。#根据目录,运行游戏,不同版本,独立执行。)

#'程序版本0.01。'def Main0_1():#修改文本,增加时间控制模块time。

#'程序版本0.02。'def Main1_1():#纠正麻烦(如果无限循环,Python反应迟缓)。

#'程序版本0.03。'def Main2_1():#绘制静态背景。绘制静态英雄飞机。

#'程序版本0.04。'def Main2_2():#调试背景动画。背景初步运动起来。

#'程序版本0.05。'def Main2_3():#调试背景动画。背景协调运动起来。

#'程序版本0.06。'def Main3_1():#调试键盘反馈。英雄初步运动起来。观察鼠标键盘反馈。

#'程序版本0.07。'def Main3_2():#调试键盘反馈。英雄运动,响应键盘反馈。

#'程序版本0.08。'def Main3_3():#调试子弹发射。英雄静止,首发子弹射出。

#'程序版本0.09。'def Main3_4():#调试子弹发射。英雄静止,多发子弹循环射出。

#'程序版本0.10。'def Main3_5():#调试子弹发射。英雄运动,调整子弹射出坐标,跟随英雄。

#'程序版本0.11。'def Main3_6():#调试敌机。首架敌机飞过。

#'程序版本0.12。'def Main3_7():#可以移动英雄,击毁首架敌机。发现Bug,摧毁首架敌机之后,原地不能增加炮弹!

#'程序版本0.13。'def Main3_8():#调试敌机。击毁首架敌机。解决Bug。

#'程序版本0.14。'def Main3_9():#调试敌机。随机出现多个敌机。

#'程序版本0.15。'def Main3_10():#调试炮弹。可以摧毁敌机。英雄无敌。

#'程序版本0.16。'def Main3_11():#英雄取消无敌。首架敌机可以杀死英雄。

#'程序版本0.17。'def Main3_12():#改成无限循环,初步完工。

#'程序版本0.18。'def Main3_13():#精简代码。取消首架敌机。

#参考1:CSDN博客文章:《python实现飞机大战完整代码,可运行》。作者:垢浪_明珠。发布日期:-09-27 10:37:39。

#参考2:CSDN博客文章:《Python实现飞机大战游戏(后附完整代码文件和素材)》。作者:the best messi。发布日期: -03-09 17:41:13。

def Main0_1():#修改文本。import pygameimport timepygame.init()#运行模块pygame。print("Hello,World!")print('程序版本0.01。')print("准备编写游戏代码...")for i in range(6):time.sleep(0.5)print(i,'延时等待:',0.5,'秒钟。')pygame.quit()#退出模块pygame。def Main1_1():#纠正麻烦。import pygameimport time #导入模块time。#pygame.init()print("Hello,World!")print('程序版本0.02。')print("创建游戏窗口。")# 开始编写游戏代码。pygame.display.set_mode((480, 700))# 创建游戏窗口。time.sleep(2) #延时2秒钟,避免无限循环,Python程序(无反应)提示。print('延时等待:',2,'秒钟。')pygame.quit()def Main2_1():#增加静态背景,静态英雄。延时依次显示。import pygameimport timeprint("Hello,World!")print('程序版本0.03。')print("增加静态背景,静态英雄飞机。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg = pygame.image.load("./images/background.png")# 加载背景图像。screen.blit(bg, (0, 0))#绘制背景图像。pygame.display.update()#更新屏幕显示。time.sleep(2) #增加延时3秒钟,观察分布更新屏幕显示。print('延时等待:',2,'秒钟。')hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。screen.blit(hero, (180,500))#绘制英雄飞机图像。pygame.display.update()#更新屏幕显示。time.sleep(2)print('再次等待:',2,'秒钟。')pygame.quit()def Main2_2():#调试背景动画。import pygameimport timeprint("Hello,World!")print('程序版本0.04。')print("背景初步运动起来(欠缺协调)。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。y=0for i in range(180):if i % 30 == 0:print('30整数倍数:',i)time.sleep(0.016)screen.blit(bg1, (0, 0))#绘制背景图像。screen.blit(bg2, (0, y))#绘制背景图像。screen.blit(hero, (180,500))#绘制英雄飞机图像。pygame.display.update()#更新屏幕显示。y+=1pygame.quit()def Main2_3():#调试背景动画。import pygameimport timeprint("Hello,World!")print('程序版本0.05。')print("背景协调运动起来。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。y1=-700;y2=0for i in range(180):time.sleep(0.016)screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, (180,500))#绘制英雄飞机图像。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_1():#调试键盘反馈。import pygameimport timeprint("Hello,World!")print('程序版本0.06。')print("英雄飞机初步自动运动起来。观察鼠标键盘反馈。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)#英雄飞机位置、尺寸。y1=-700;y2=0for i in range(300):time.sleep(0.016)event_list = pygame.event.get()# 监听事件。if len(event_list) > 0:print(event_list)if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 480hero_rect.x -= 1# 2.修改英雄位置。screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_2():#调试键盘反馈。import pygameimport timeprint("Hello,World!")print('程序版本0.07。')print("调试英雄飞机,响应键盘反馈。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)#英雄飞机位置、尺寸。y1=-700;y2=0for i in range(180):time.sleep(0.016)event_list = pygame.event.get()# 监听事件。if len(event_list) > 0:print(event_list)keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0print(hero_rect)screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_3():#调试子弹发射。import pygameimport timeprint("Hello,World!")print('程序版本0.08。')print("英雄飞机静止,首发子弹射出。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)#英雄飞机位置、尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 次发炮弹。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 次发炮弹。y1=-700;y2=0#背景初始坐标。for i in range(180):time.sleep(0.016)event_list = pygame.event.get()# 监听事件。if len(event_list) > 0:print(event_list)keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0print(hero_rect)screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(bullet0, bullet0_rect)#绘制英雄飞机图像。bullet1_speed = -2bullet1_rect.x = hero_rect.x + 46bullet1_rect.y += bullet1_speedscreen.blit(bullet0, bullet1_rect)pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_4():#调试子弹发射。import pygameimport timeprint("Hello,World!")print('程序版本0.09。')print("英雄飞机静止,多发子弹循环射出。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)#英雄飞机位置、尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)#库存炮弹。bullet1_rect = pygame.Rect(196, 640, 11, 18)#首发炮弹。bullet_rect=[1,196,640]List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 次发炮弹。y1=-700;y2=0#背景初始坐标。for j in range(180):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(bullet0, bullet0_rect)#绘制炮弹。bullet1_speed = -2bullet1_rect.x = hero_rect.x + 46bullet1_rect.y += bullet1_speedif j % 30 == 0:#判断是否30倍数。0.016*30=~0.5秒钟。bullet_rect=[1,196,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。#print(j,List_bullet)for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。screen.blit(bullet0, bullet1_rect)pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_5():#调试子弹发射。import pygameimport timeprint("Hello,World!")print('程序版本0.10。')print("控制英雄飞机运动,子弹射出坐标跟随改变位置。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")#)# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)#英雄飞机位置、尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)#库存炮弹。bullet1_rect = pygame.Rect(196, 640, 11, 18)#首发炮弹。bullet_rect=[1,196,640]List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 次发炮弹。y1=-700;y2=0#背景初始坐标。for j in range(180):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。bullet0_rect.x = hero_rect.x + 46screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#0.016*30=~0.5秒钟。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。#print(j,List_bullet)for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_6():#调试敌机。import pygameimport timeprint("Hello,World!")print('程序版本0.11。')print("首架敌机飞过。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy_rect = pygame.Rect(100, 100, 58, 48)# 定义敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。y1=-700;y2=0#背景初始坐标。for j in range(180):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0enemy_rect.y += 4if enemy_rect.y >= 6660:enemy_rect.y = 700screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(enemy, enemy_rect)#绘制敌机。bullet0_rect.x = hero_rect.x + 46screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#0.016*30=~0.5秒钟。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_7():#调试敌机。import pygameimport timeprint("Hello,World!")print('程序版本0.12。')print("可以移动英雄,击毁首架敌机。发现Bug,摧毁之后,炮弹暂停!")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy_rect = pygame.Rect(100, 100, 58, 48)# 定义敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。y1=-700;y2=0#背景初始坐标。for j in range(300):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0enemy_rect.y += 4if enemy_rect.y >= 6660:enemy_rect.y = 700screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(enemy, enemy_rect)#绘制敌机。bullet0_rect.x = hero_rect.x + 46screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#0.016*30=~0.5秒钟。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。#print(j,List_bullet)for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)if bullet[1] > enemy_rect.x - 9 and bullet[1] < enemy_rect.x + 56: if bullet[2] < enemy_rect.y + 48:List_bullet.remove(bullet) #销毁炮弹。enemy_rect.y = 700 #隐藏敌机,等同销毁。for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_8():#调试敌机。import pygameimport timeimport randomprint("Hello,World!")print('程序版本0.13。')print("击毁首架敌机。解决Bug。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy0 = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy0_rect = pygame.Rect(100, 100, 58, 48)# 定义敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。y1=-700;y2=0#背景初始坐标。for j in range(180):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0enemy0_rect.y += 2if enemy0_rect.y >= 666: #如果首架敌机超出游戏显示范围,隐藏。enemy0_rect.y = 700screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(enemy0, enemy0_rect)#绘制首架敌机。bullet0_rect.x = hero_rect.x + 46screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#0.016*30=~0.5秒钟。bullet_rect=[1,hero_rect.x + 46,640]print(j,bullet_rect)List_bullet.append(bullet_rect) #英雄发射一枚子弹。print(j,List_bullet)for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)if bullet[1] > enemy0_rect.x - 9 and bullet[1] < enemy0_rect.x + 56: if bullet[2] < enemy0_rect.y + 48:List_bullet.remove(bullet) #销毁炮弹。enemy0_rect.x = -100enemy0_rect.y = -100 #隐藏敌机,等同销毁。print('摧毁一架敌机!')for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_9():#调试敌机。import pygameimport timeimport randomprint("Hello,World!");print('程序版本0.14。')print("随机出现多个敌机。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy0 = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy0_rect = pygame.Rect(100, 100, 58, 48)# 定义敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。List_enemy=[]#敌机列表。[[1,100,100,2]]。[状态,横标,纵标,速度]。enemy_rect = pygame.Rect(100, 100, 58, 48)# 次生敌机初始位置,尺寸。y1=-700;y2=0#背景初始坐标。for j in range(180):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0enemy0_rect.y += 2if enemy0_rect.y >= 666:enemy0_rect.y = 700screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(enemy0, enemy0_rect)#绘制首架敌机。if j % 60 == 0:#60倍数。0.016*60=~1秒钟。enemy_num=[1,random.randint(0,420),0,random.randint(1,3)]print(j,enemy_num)List_enemy.append(enemy_num)for i in range(len(List_enemy)):#超出游戏范围,销毁敌机。if List_enemy[i][2] >= 666:List_enemy[i][0] = 0for enemy in List_enemy:if enemy[0]==0: #根据状态,销毁炮弹。List_enemy.remove(enemy)for i in range(len(List_enemy)):#循环显示所有敌机。enemy_rect[0] = List_enemy[i][1]List_enemy[i][2] += List_enemy[i][3]enemy_rect[1] = List_enemy[i][2]screen.blit(enemy0, enemy_rect)#绘制敌机。bullet0_rect.x = hero_rect.x + 46screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#0.016*30=~0.5秒钟。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)if bullet[1] > enemy0_rect.x - 9 and bullet[1] < enemy0_rect.x + 56: if bullet[2] < enemy0_rect.y + 48:List_bullet.remove(bullet) #销毁炮弹。enemy0_rect.x = -100enemy0_rect.y = -100 #隐藏敌机,等同销毁。print('摧毁一架敌机!')for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_10():#调试炮弹。import pygameimport timeimport randomprint("Hello,World!");print('程序版本0.15。')print("可以摧毁敌机。英雄飞机无敌。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy0 = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy0_rect = pygame.Rect(100, 100, 58, 48)# 定义敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。List_enemy=[]#敌机列表。[[1,100,100,2]]。[状态,横标,纵标,速度]。enemy_rect = pygame.Rect(100, 100, 58, 48)# 次生敌机初始位置,尺寸。y1=-700;y2=0#背景初始坐标。for j in range(180):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0enemy0_rect.y += 2if enemy0_rect.y >= 666:enemy0_rect.y = 700screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(enemy0, enemy0_rect)#绘制首架敌机。if j % 60 == 0:#60倍数。0.016*60=~1秒钟。enemy_num=[1,random.randint(0,420),0,random.randint(1,3)]print(j,enemy_num)List_enemy.append(enemy_num)for i in range(len(List_enemy)):#超出游戏范围,销毁敌机。if List_enemy[i][2] >= 666:List_enemy[i][0] = 0for enemy in List_enemy:if enemy[0]==0: #根据状态,销毁炮弹。List_enemy.remove(enemy)for i in range(len(List_enemy)):#循环显示所有敌机。enemy_rect[0] = List_enemy[i][1]List_enemy[i][2] += List_enemy[i][3]enemy_rect[1] = List_enemy[i][2]screen.blit(enemy0, enemy_rect)#绘制敌机。bullet0_rect.x = hero_rect.x + 46screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#0.016*30=~0.5秒钟。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)if bullet[1] > enemy0_rect.x - 9 and bullet[1] < enemy0_rect.x + 56: if bullet[2] < enemy0_rect.y + 48:List_bullet.remove(bullet) #销毁炮弹。enemy0_rect.x = -100enemy0_rect.y = -100 #隐藏敌机,等同销毁。print('摧毁一架敌机!First blood!')for enemy in List_enemy:if bullet[1] > enemy[1] - 9 and bullet[1] < enemy[1] + 56:if bullet[2] > enemy[2] and bullet[2] < enemy[2] + 48:List_bullet.remove(bullet) #销毁一发炮弹。List_enemy.remove(enemy) #销毁一架敌机。print('再次摧毁一架敌机!One more!')for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_11():#调试战斗。import pygameimport timeimport randomprint("Hello,World!");print('程序版本0.16。')print("英雄取消无敌。首架敌机可以杀死英雄。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy0 = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy0_rect = pygame.Rect(100, 100, 58, 48)# 定义敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。List_enemy=[]#敌机列表。[[1,100,100,2]]。[状态,横标,纵标,速度]。enemy_rect = pygame.Rect(100, 100, 58, 48)# 次生敌机初始位置,尺寸。y1=-700;y2=0#背景初始坐标。for j in range(180):time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0enemy0_rect.y += 2if enemy0_rect.y >= 666:enemy0_rect.y = 700screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(enemy0, enemy0_rect)#绘制首架敌机。if j % 60 == 0:#60倍数。0.016*60=~1秒钟。enemy_num=[1,random.randint(0,420),0,random.randint(1,3)]print(j,enemy_num)List_enemy.append(enemy_num)for i in range(len(List_enemy)):#超出游戏范围,销毁敌机。if List_enemy[i][2] >= 666:List_enemy[i][0] = 0for enemy in List_enemy:if enemy[0]==0: #根据状态,销毁炮弹。List_enemy.remove(enemy)for i in range(len(List_enemy)):#循环显示所有敌机。enemy_rect[0] = List_enemy[i][1]List_enemy[i][2] += List_enemy[i][3]enemy_rect[1] = List_enemy[i][2]screen.blit(enemy0, enemy_rect)#绘制敌机。bullet0_rect.x = hero_rect.x + 46screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#0.016*30=~0.5秒钟。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)if bullet[1] > enemy0_rect.x - 9 and bullet[1] < enemy0_rect.x + 56: if bullet[2] < enemy0_rect.y + 48:List_bullet.remove(bullet) #销毁炮弹。enemy0_rect.x = -100enemy0_rect.y = -100 #隐藏敌机,等同销毁。print('摧毁一架敌机!First blood!')if enemy0_rect.x > hero_rect.x - 59 and enemy0_rect.x < hero_rect.x + 99:if enemy0_rect.y > hero_rect.y - 55:enemy0_rect.x = -100enemy0_rect.y = -100hero_rect.x = -200hero_rect.y = -200print("英雄牺牲!游戏结束。")pygame.quit()# 结束游戏exit()for enemy in List_enemy:if bullet[1] > enemy[1] - 9 and bullet[1] < enemy[1] + 56:if bullet[2] > enemy[2] and bullet[2] < enemy[2] + 48:List_bullet.remove(bullet) #销毁一发炮弹。List_enemy.remove(enemy) #销毁一架敌机。print('再次摧毁一架敌机!One more!')if enemy[1] > hero_rect.x - 59 and enemy[1] < hero_rect.x + 99:if enemy[2] > hero_rect.y - 55:List_enemy.remove(enemy) #敌机碰撞消失。hero_rect.x = -200hero_rect.y = -200print("英雄牺牲!游戏结束。")pygame.quit()# 结束游戏exit()for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700pygame.quit()def Main3_12():#取消游戏时间控制。import pygameimport timeimport randomprint("Hello,World!");print('程序版本0.17。')print("无限循环。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy0 = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy0_rect = pygame.Rect(100, 100, 58, 48)# 定义敌机初始位置,尺寸。enemy_rect = pygame.Rect(100, 100, 58, 48)# 次生敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。List_enemy=[]#敌机列表。[[1,100,100,2]]。[状态,横标,纵标,速度]。y1=-700;y2=0#背景初始坐标。j=0while True:time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0enemy0_rect.y += 2 #首架敌机。if enemy0_rect.y >= 666: #如果首架敌机超出游戏显示范围,隐藏。enemy0_rect.y = 700screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。screen.blit(enemy0, enemy0_rect)#绘制首架敌机。if j % 60 == 0:#判断60倍数。0.016*60=~1秒钟。产生敌机。enemy_num=[1,random.randint(0,420),0,random.randint(1,3)]List_enemy.append(enemy_num)for i in range(len(List_enemy)):#超出游戏范围,销毁敌机。if List_enemy[i][2] >= 666:List_enemy[i][0] = 0for enemy in List_enemy:if enemy[0]==0: #根据状态,销毁炮弹。List_enemy.remove(enemy)for i in range(len(List_enemy)):#循环显示所有敌机。enemy_rect[0] = List_enemy[i][1]List_enemy[i][2] += List_enemy[i][3]enemy_rect[1] = List_enemy[i][2]screen.blit(enemy0, enemy_rect)#绘制敌机。bullet0_rect.x = hero_rect.x + 46 #机舱炮弹。screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#判断60倍数。0.016*30=~0.5秒钟。产生炮弹。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)if bullet[1] > enemy0_rect.x - 9 and bullet[1] < enemy0_rect.x + 56: if bullet[2] < enemy0_rect.y + 48:List_bullet.remove(bullet) #销毁炮弹。enemy0_rect.x = -100enemy0_rect.y = -100 #隐藏首架敌机,等同销毁。print('摧毁一架敌机!First blood!')if enemy0_rect.x > hero_rect.x - 59 and enemy0_rect.x < hero_rect.x + 99:if enemy0_rect.y > hero_rect.y - 55:enemy0_rect.x = -100enemy0_rect.y = -100hero_rect.x = -200hero_rect.y = -200print("英雄牺牲!游戏结束。")pygame.quit()# 结束游戏。exit()for enemy in List_enemy:if bullet[1] > enemy[1] - 9 and bullet[1] < enemy[1] + 56: if bullet[2] > enemy[2] and bullet[2] < enemy[2] + 48:List_bullet.remove(bullet) #销毁一发炮弹。List_enemy.remove(enemy) #销毁一架敌机。print('再次摧毁一架敌机!One more!')if enemy[1] > hero_rect.x - 55 and enemy[1] < hero_rect.x + 99:if enemy[2] > hero_rect.y - 55:List_enemy.remove(enemy) #敌机碰撞消失。hero_rect.x = -200hero_rect.y = -200print("英雄牺牲!游戏结束。")pygame.quit()# 结束游戏exit()for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700j+=1pygame.quit()def Main3_13():#精简代码,初步完工。取消首架敌机。import pygame;import time;import randomprint("Hello,World!");print('程序版本0.18。')print("飞机大战游戏开始。")screen = pygame.display.set_mode((480, 700))# 设置游戏窗口尺寸。bg1 = pygame.image.load("./images/background.png")# 加载背景图像。bg2 = pygame.image.load("./images/background.png")# 加载背景图像。hero = pygame.image.load("./images/me1.png")# 加载英雄飞机图像。hero_rect = pygame.Rect(150, 580, 102, 126)# 定义英雄初始位置,尺寸。bullet0 = pygame.image.load("./images/bullet1.png")#加载炮弹图像。bullet0_rect = pygame.Rect(196, 640, 11, 18)# 库存炮弹位置、尺寸。bullet1_rect = pygame.Rect(196, 640, 11, 18)# 首发炮弹位置、尺寸。bullet_rect=[1,196,640]enemy0 = pygame.image.load("./images/enemy1.png")# 加载敌机图像。enemy_rect = pygame.Rect(100, 100, 58, 48)# 次生敌机初始位置,尺寸。List_bullet=[]#子弹列表。[[1,196,640]]。[状态,横向坐标,纵向坐标]。List_enemy=[]#敌机列表。[[1,100,100,2]]。[状态,横标,纵标,速度]。y1=-700;y2=0#两个背景图像,刷新初始纵向坐标。j=0while True:time.sleep(0.016)for event in pygame.event.get():if event.type == pygame.QUIT:# 判断是否退出游戏。print("游戏结束")pygame.quit()exit()keys_pressed = pygame.key.get_pressed()#获取键盘反馈。if keys_pressed[pygame.K_RIGHT]:# 判断按键,箭头向右。hero_speed = 4elif keys_pressed[pygame.K_LEFT]:# 判断按键,箭头向左。hero_speed = -4else:hero_speed = 0hero_rect.x += hero_speedif hero_rect.x >= 380:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 380if hero_rect.x <= 0:# 判断英雄位置,如果超出屏幕,转移对边。hero_rect.x = 0screen.blit(bg1, (0, y1))#绘制背景图像。screen.blit(bg2, (0, y2))#绘制背景图像。screen.blit(hero, hero_rect)#绘制英雄飞机图像。if j % 60 == 0:#判断60倍数。0.016*60=~1秒钟。产生敌机。enemy_num=[1,random.randint(0,420),0,random.randint(1,3)]List_enemy.append(enemy_num)for i in range(len(List_enemy)):#超出游戏范围,销毁敌机。if List_enemy[i][2] >= 666:List_enemy[i][0] = 0for enemy in List_enemy:if enemy[0]==0: #根据状态,销毁敌机。List_enemy.remove(enemy)for i in range(len(List_enemy)):#循环显示所有敌机。enemy_rect[0] = List_enemy[i][1]List_enemy[i][2] += List_enemy[i][3]enemy_rect[1] = List_enemy[i][2]screen.blit(enemy0, enemy_rect)#绘制敌机。bullet0_rect.x = hero_rect.x + 46 #机舱炮弹。screen.blit(bullet0, bullet0_rect)#绘制炮弹。if j % 30 == 0:#判断60倍数。0.016*30=~0.5秒钟。产生炮弹。bullet_rect=[1,hero_rect.x + 46,640]List_bullet.append(bullet_rect) #英雄发射一枚子弹。for i in range(len(List_bullet)):#超出游戏范围,销毁炮弹。if List_bullet[i][2] < 0:List_bullet[i][0] = 0for bullet in List_bullet:if bullet[0]==0: #根据状态,销毁炮弹。List_bullet.remove(bullet)for enemy in List_enemy:if bullet[1] > enemy[1] - 9 and bullet[1] < enemy[1] + 56: if bullet[2] > enemy[2] and bullet[2] < enemy[2] + 48:List_bullet.remove(bullet) #销毁一发炮弹。List_enemy.remove(enemy) #销毁一架敌机。print('摧毁一架敌机!Good job!')if enemy[1] > hero_rect.x - 55 and enemy[1] < hero_rect.x + 99:if enemy[2] > hero_rect.y - 55:List_enemy.remove(enemy) #敌机碰撞消失。hero_rect.x = -200hero_rect.y = -200print("英雄牺牲!游戏结束。Game Over")pygame.quit()# 结束游戏exit()for i in range(len(List_bullet)):#循环显示所有炮弹。bullet1_rect[0] = List_bullet[i][1]List_bullet[i][2] -= 2bullet1_rect[1] = List_bullet[i][2]screen.blit(bullet0, bullet1_rect)#绘制炮弹。pygame.display.update()#更新屏幕显示。y1+=1;y2+=1if y1==700:y1=-700if y2==700:y2=-700j+=1pygame.quit()Main3_13() #根据目录,运行游戏,不同版本,独立执行。

游戏素材:

me1.png

bullet1.png

enemy1.png

background.png

-10-19。小白自学:飞机大战源码改造。(新手入门 学习总结。从零开始 步步为营。不同版本 独立运行。完整代码 感谢原著。)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。