经典回顾:用pygame模块做一个飞机大战
目录
前言
一、安装pygame:
1.用pip包管理器安装:
2.二进制安装包安装:
二、学习pygame的内置模块:
1.初始化:
2.精灵组:
3.页面的渲染和刷新
三、使用步骤
1.准备游戏素材:
2.引入库
3.game_main.py (完整代码)
4.sprite_file.py(完整代码)
5.创建一个score_data.csv 的csv文件 用于保存玩家的信息
总结
前言
Pygame 是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,它是一个免费、开源的第三方软件包,支持多种操作系统,具有良好的跨平台性(比如 Windows、Linux、Mac 等)。Pygame 是 Pete Shinners 在 SDL(Simple DirectMedia Layer,一套开源的跨平台多媒体开发库)基础上开发而来,其目的是取代 PySDL。
用pygame做飞机大战之前,我们要学会pygame模块提供的一些功能,下面只对于今天程序要用到的进行简单的讲解
提示:以下是本篇文章正文内容,下面案例可供参考
一、安装pygame:
1.用pip包管理器安装:
键盘win+R调出运行窗口输入cmd在命令行输入以下内容回车即可
pip install pygame
2.二进制安装包安装:
Python 第三方库官网 PyPI(点击前往下载)提供了不同操作平台的 Pygame 安装包,如下所示:
二、学习pygame的内置模块:
1.初始化:
1.pygame.init() pygame 模块的初始化
2.pygame.display.set_caption('名称') pygame运行时的窗口名称
3.screen = pygame.display.set_mode((480, 700)) 创建一个窗口对象(大小为(480,700))
4.pygame.font.Font(None, 20) 创建字体对象
2.精灵组:
1.pygame.sprite.Sprite 内置精灵组 在创建精灵类时重写:
class class_name(pygame.sprite.Sprite):def __init__(self, y):super().__init__()
2.精灵组内提供了updata()方法:
def update(self, *args: Any, **kwargs: Any) -> None: pass
3.精灵组内提供了很多属性:
例如:
self.image = pygame.image.load(file) self.rect = self.image.get_rect()
4. self.kill() 摧毁精灵个体,释放内存
3.页面的渲染和刷新
三、使用步骤
1.准备游戏素材:
在我的资源中有上传详细:pygame 飞机大战资源
2.引入库
import csv
import re
from typing import Any
import random
import pygame
import copy
import sprite_file
3.game_main.py (完整代码)
import random
import pygame
import sprite_file# 定义事件
BULLENT_EVENT = pygame.USEREVENT + 1
BULLENT_EVENT1 = pygame.USEREVENT + 2
BOSS_EVENT = pygame.USEREVENT + 3
BULLENT_EVENT2 = pygame.USEREVENT + 4
TIME_EVENT = pygame.USEREVENT + 5
TIME_EVENT1 = pygame.USEREVENT + 6class Game:def __init__(self, game_difficult, gamer_info):self.gamer_nick = gamer_info[0] # 获取玩家info参数# 游戏初始化self.object_speed = { # 难度对速度的列表'简单': (5, 40, 5, 5, 0),'一般': (10, 70, 10, 10, 0),'困难': (15, 100, 15, 15, 1),'噩梦': (20, 150, 20, 20, 2)}self.game_speed = self.object_speed[game_difficult] # 当前游戏难度对应的速度参数列表self.my0_b_speed = 15 # 我放飞机的子弹速度self.random_speed = [60, 400, 60, 60] # 随机生成的time参数self.equipment = 0 # 拾取装备的次数self.file = sprite_file.File(file_loc='score_data.csv', encoding='utf_8') # 创建文件操作对象# print(self.file_data)pygame.init() # pygame 初始化pygame.display.set_caption('飞机大战2') # 窗口名称self.prop = 0 # 强化道具参数初始化self.score = 0 # 总分数初始化self.bomb_num = 10 # 炸弹的个数self.score_list = list() # 分数列表self.my0_speed = 5 # 战机的移动速度self.font = pygame.font.Font(None, 20) # 创建字体对象self.root = pygame.display.set_mode((480, 700)) # 创建窗口大小的对象# bug 修复self.time_speed = 5self.time_bug_j = [i for i in range(0, self.time_speed)]self.time_bug_i = 0# 背景加载self.bj1 = sprite_file.Background(0)self.bj2 = sprite_file.Background(-700)# 创建自己的飞机self.my0 = sprite_file.Our_fighter()self.bullet_m = pygame.sprite.Group()# 创建敌机self.enemy = pygame.sprite.Group()self.boss1 = pygame.sprite.Group()self.enemy_b = pygame.sprite.Group()self.big_boss = pygame.sprite.Group()self.big_boss_bullet = pygame.sprite.Group()# 创建游戏道具self.game_props_b = pygame.sprite.Group()# 游戏帧数self.game_zl = 60# 创建时间事件pygame.time.set_timer(BULLENT_EVENT, 100)pygame.time.set_timer(BULLENT_EVENT1, 500)pygame.time.set_timer(BOSS_EVENT, 50000)pygame.time.set_timer(TIME_EVENT1, 50000)pygame.time.set_timer(BULLENT_EVENT2, 20000)pygame.time.set_timer(TIME_EVENT, 1)# 游戏事件def handle_event(self):# 退出事件for event in pygame.event.get():# print(event)if event.type == pygame.QUIT:pygame.quit()exit(0)# 时间事件if event.type == BULLENT_EVENT:self.bullet_m.add(sprite_file.Bullet_M(self.my0.rect.x, self.my0.rect.y, speed=self.my0_b_speed))if self.equipment == 1:self.bullet_m.add(sprite_file.Bullet_M(self.my0.rect.x, self.my0.rect.y, mode='b', speed=self.my0_b_speed))self.bullet_m.add(sprite_file.Bullet_M(self.my0.rect.x, self.my0.rect.y, mode='c', speed=self.my0_b_speed))if self.equipment >= 2:self.bullet_m.add(sprite_file.Bullet_M(self.my0.rect.x, self.my0.rect.y, mode='b', speed=self.my0_b_speed))self.bullet_m.add(sprite_file.Bullet_M(self.my0.rect.x, self.my0.rect.y, mode='c', speed=self.my0_b_speed))self.bullet_m.add(sprite_file.Bullet_M(self.my0.rect.x, self.my0.rect.y, mode='d', speed=self.my0_b_speed))self.bullet_m.add(sprite_file.Bullet_M(self.my0.rect.x, self.my0.rect.y, mode='e', speed=self.my0_b_speed))# if event.type == BULLENT_EVENT1:# for boss in self.boss1:# self.enemy_b.add(hero.Bullet_boss1(boss.rect.x, boss.rect.y, boss.speed + 3))if event.type == BOSS_EVENT:self.big_boss.add(sprite_file.Big_boss())if event.type == TIME_EVENT1:for i in range(0, 4):self.random_speed[i] -= self.game_speed[i]print('游戏难度改变', self.random_speed)if event.type == TIME_EVENT:self.score += 1if event.type == BULLENT_EVENT2:self.equipment -= 1# 碰撞事件for boss1 in self.boss1:collision_boss = pygame.sprite.spritecollide(boss1, self.bullet_m, True)if collision_boss:boss1.blood -= 1if not boss1.active:self.score += 2000for big_boss_each in self.big_boss:collision_boss = pygame.sprite.spritecollide(big_boss_each, self.bullet_m, True)if collision_boss:big_boss_each.blood -= 1if not big_boss_each.active:self.score += 10000for enemy in self.enemy:collision_b = pygame.sprite.spritecollide(enemy, self.bullet_m, True)if collision_b:enemy.active = Falseself.score += 500collision_props_my = pygame.sprite.spritecollide(self.my0, self.game_props_b, False)if collision_props_my:for prop_item in self.game_props_b:# print('prop_item: ', prop_item.choose_info)if prop_item.choose_info == 'bullet':self.equipment += 1self.prop += 1# prop_item.kill()pygame.sprite.spritecollide(self.my0, self.game_props_b, True)if prop_item.choose_info == 'bomb':self.bomb_num += 1# prop_item.kill()pygame.sprite.spritecollide(self.my0, self.game_props_b, True)# print(self.prop)collision_boss_m = pygame.sprite.spritecollide(self.my0, self.boss1, True)collision_m = pygame.sprite.spritecollide(self.my0, self.enemy, True)collision_boss_b = pygame.sprite.spritecollide(self.my0, self.enemy_b, True)collision_big_boss = pygame.sprite.spritecollide(self.my0, self.big_boss, True)collision_big_boss_b = pygame.sprite.spritecollide(self.my0, self.big_boss_bullet, True)if collision_m or collision_boss_m or collision_big_boss:self.my0.active = Falseif collision_boss_b or collision_big_boss_b:self.my0.blood -= 1if not self.my0.active:self.score_list.append(self.score)# print(len(self.score_list))if len(self.score_list) >= 5:self.file.write_file(data_all=[self.gamer_nick, self.score_list[-1]], mode='a', writer_mod=False)file_data = self.file.read_file()file_analyze = self.file.analyze_max_cal(data_list=file_data)self.file.write_file(data_all=file_analyze, mode='w')print('-' * 50)i = 1for each in file_analyze:print(f'{i} {each[0]}: {each[1]}')i += 1print('-' * 50)print('游戏分数: ', self.score_list[-1])exit(0)# 键盘事件key_pressed = pygame.key.get_pressed()if key_pressed[pygame.K_a] and -56 < self.my0.rect.x:self.my0.rect.x -= self.my0_speedif key_pressed[pygame.K_d] and self.my0.rect.x < 424:self.my0.rect.x += self.my0_speedif key_pressed[pygame.K_w] and -68 < self.my0.rect.y:self.my0.rect.y -= self.my0_speedif key_pressed[pygame.K_s] and self.my0.rect.y < 632:self.my0.rect.y += self.my0_speedif key_pressed[pygame.K_q] and self.bomb_num > 0:self.kill_all(enemy=self.enemy, boss1=self.boss1)# , big_boss=self.big_bossif self.time_bug_i > self.time_speed - 1:self.time_bug_i = 0if self.time_bug_i < 10:if not self.time_bug_j[self.time_bug_i]:self.bomb_num -= 1self.time_bug_i += 1else:pass# 刷新展示def show(self):self.root.blit(self.bj1.image, self.bj1.rect)self.root.blit(self.bj2.image, self.bj2.rect)self.root.blit(self.my0.image, self.my0.rect)self.enemy.draw(self.root)self.boss1.draw(self.root)self.bullet_m.draw(self.root)self.enemy_b.draw(self.root)self.big_boss.draw(self.root)self.game_props_b.draw(self.root)self.big_boss_bullet.draw(self.root)self.text1 = sprite_file.Text(screen=self.root, msg=f'分数: {self.score}', loc=(0, 0))self.text1.draw_button()self.text2 = sprite_file.Text(screen=self.root, msg=f'血量: {self.my0.blood}', loc=(0, 30))self.text2.draw_button()self.text3 = sprite_file.Text(screen=self.root, msg=f'炸弹: {self.bomb_num}', loc=(0, 60))self.text3.draw_button()pygame.display.update()# 更新游戏数据def update(self):# 添加随机游戏组件if not random.randint(0, self.random_speed[0]):self.enemy.add(sprite_file.Enemy_fighter(speed_object=self.game_speed[4]))if not random.randint(0, self.random_speed[1]):self.boss1.add(sprite_file.Enemy_fighter_boss1(speed_object=self.game_speed[4]))if not random.randint(0, 500):self.game_props_b.add(sprite_file.Drop_equipment())if self.boss1 and not random.randint(0, self.random_speed[2]):for enemy in self.boss1:self.enemy_b.add(sprite_file.Bullet_boss1(enemy.rect.x, enemy.rect.y, enemy.speed + 3, object_speed=self.game_speed[4]))if self.big_boss and not random.randint(0, self.random_speed[3]):for big_boss in self.big_boss:self.big_boss_bullet.add(sprite_file.Big_boss_bullet(boss_x=big_boss.rect.x, boss_y=big_boss.rect.y, my_x=self.my0.rect.x,my_y=self.my0.rect.y, speed_object=self.game_speed[4]))# 更新数据self.bj1.update()self.bj2.update()self.my0.update()self.enemy.update()self.boss1.update()self.enemy_b.update()self.bullet_m.update()self.game_props_b.update()self.big_boss.update()self.big_boss_bullet.update()def judge(self):# if len(self.collision_m):# self.game_over()passdef kill_all(self, **kwargs):kwa_score = {'enemy': 500,'boss1': 2000,'big_boss': 10000}for kwarg in kwargs.items():for item_act in kwarg[1]:if kwarg[0] != 'big_boss':item_act.active = Falseself.score += kwa_score.get(kwarg[0])elif kwarg[0] == 'big_boss':item_act.blood -= 50if not item_act.active:self.score += kwa_score.get(kwarg[0])def run(self):while True:pygame.time.Clock().tick(self.game_zl)self.handle_event()self.update()self.show()if __name__ == '__main__':gamer_nick = input('请输入你的游戏昵称:')game = Game('一般', (gamer_nick,))game.run()
4.sprite_file.py(完整代码)
import csv
import re
from typing import Any
import random
import pygame
import copySTOP_BIG_BOSS = pygame.USEREVENT + 7
NUM = 0# 文件操作
class File(object):def __init__(self, file_loc, encoding='utf-8', new_line=''):self.file_loc = file_locself.encoding = encodingself.new_line = new_linedef write_file(self, data_all: list, mode='w', writer_mod=True):with open(self.file_loc, mode=mode, encoding=self.encoding, newline=self.new_line) as f:filer = csv.writer(f)if writer_mod:filer.writerows(data_all)else:filer.writerow(data_all)def read_file(self, mode='r'):with open(self.file_loc, mode=mode, encoding=self.encoding) as file:data = list(csv.reader(file))return datadef data_split(self, data_str):data_end_list = re.findall('(.*?): (.*)', data_str)# print(data_end_list)return data_end_listdef analyze_max_cal(self, data_list):data_object = set()lam = list()end_data = list()for data in data_list:data_object.add(data[0])# print(data_object)object_data_tuple = tuple(data_object)for object_t in object_data_tuple:for data in data_list:if data[0] == object_t:lam.append(int(data[1]))# print(lam)end_data_ = sorted(lam, reverse=True)# print(end_data_)end_data.append((object_t, end_data_[0]))lam = copy.deepcopy(lam)lam = []# print(end_data)end_d = sorted(end_data, key=lambda item: item[1], reverse=True)# print(end_d)return end_d# 文字操作
class Text(object):def __init__(self, screen, msg, loc):super().__init__()self.screen = screenself.msg = msgself.color = (0, 0, 0)self.background_color = (255, 255, 255)self.rect = pygame.rect.Rect(loc[0], loc[1], 200, 50)self.font = pygame.font.Font("C:/Windows/Fonts/SIMHEI.TTF", 20)self.show_msg(msg=self.msg)def show_msg(self, msg):self.msg_image = self.font.render(msg, True, self.color) # background_colorself.msg_image_rect = self.msg_image.get_rect()def draw_button(self):# 绘制一个用颜色填充的按钮,再绘制文本# self.screen.fill(self.background_color, self.rect)self.screen.blit(self.msg_image, (self.rect.x + 10, self.rect.y + 10))# 背景精灵组
class Background(pygame.sprite.Sprite):def __init__(self, y):super().__init__()self.image = pygame.image.load(r'images/background.png')self.rect = self.image.get_rect()self.rect.x = 0self.rect.y = ydef update(self, *args: Any, **kwargs: Any) -> None:self.rect.y += 1if self.rect.y >= 700:self.rect.y = -700# 我方战机精灵组
class Our_fighter(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = pygame.image.load(r'images/me1.png')self.destroy_images = [pygame.image.load(r'images/me_destroy_1.png'),pygame.image.load(r'images/me_destroy_1.png'),pygame.image.load(r'images/me_destroy_1.png'),pygame.image.load(r'images/me_destroy_2.png'),pygame.image.load(r'images/me_destroy_2.png'),pygame.image.load(r'images/me_destroy_2.png'),pygame.image.load(r'images/me_destroy_3.png'),pygame.image.load(r'images/me_destroy_3.png'),pygame.image.load(r'images/me_destroy_3.png'),pygame.image.load(r'images/me_destroy_4.png'),pygame.image.load(r'images/me_destroy_4.png'),pygame.image.load(r'images/me_destroy_4.png')]self.rect = self.image.get_rect()self.rect.x = 180self.rect.y = 500self.blood = 5self.active = Trueself.num = 0def update(self, *args: Any, **kwargs: Any) -> None:if self.blood <= 0:self.active = Falseif not self.active:if self.num < 12:self.image = self.destroy_images[self.num]self.num += 1else:self.kill()# print(self.blood)# 敌方战机精灵组
class Enemy_fighter(pygame.sprite.Sprite):def __init__(self, speed_object=0):super().__init__()self.image = pygame.image.load(r'images/enemy1.png')self.destroy_images = [pygame.image.load(r'images/enemy1_down1.png'),pygame.image.load(r'images/enemy1_down1.png'),pygame.image.load(r'images/enemy1_down1.png'),pygame.image.load(r'images/enemy1_down2.png'),pygame.image.load(r'images/enemy1_down2.png'),pygame.image.load(r'images/enemy1_down2.png'),pygame.image.load(r'images/enemy1_down3.png'),pygame.image.load(r'images/enemy1_down3.png'),pygame.image.load(r'images/enemy1_down3.png'),pygame.image.load(r'images/enemy1_down4.png'),pygame.image.load(r'images/enemy1_down4.png'),pygame.image.load(r'images/enemy1_down4.png')]self.rect = self.image.get_rect()self.rect.y = 0self.rect.x = random.randint(0, 430)self.speed = random.choice((1, 2, 3)) + speed_objectself.active = Trueself.num = 0def update(self, *args: Any, **kwargs: Any) -> None:self.rect.y += self.speedif self.rect.y >= 700:self.kill()if not self.active:if self.num < 12:self.image = self.destroy_images[self.num]self.num += 1else:self.kill()# 敌方小boss战机精灵组
class Enemy_fighter_boss1(pygame.sprite.Sprite):def __init__(self, speed_object=0):super().__init__()self.image = pygame.image.load(r'images/enemy2.png')self.hit_image = pygame.image.load(r'images/enemy2_hit.png')self.destroy_images = [pygame.image.load(r'images/enemy2_down1.png'),pygame.image.load(r'images/enemy2_down1.png'),pygame.image.load(r'images/enemy2_down1.png'),pygame.image.load(r'images/enemy2_down2.png'),pygame.image.load(r'images/enemy2_down2.png'),pygame.image.load(r'images/enemy2_down2.png'),pygame.image.load(r'images/enemy2_down3.png'),pygame.image.load(r'images/enemy2_down3.png'),pygame.image.load(r'images/enemy2_down3.png'),pygame.image.load(r'images/enemy2_down4.png'),pygame.image.load(r'images/enemy2_down4.png'),pygame.image.load(r'images/enemy2_down4.png')]self.rect = self.image.get_rect()self.rect.y = 0self.rect.x = random.randint(0, 410)self.speed = random.choice((1, 2)) + speed_objectself.active = Trueself.num = 0self.blood = 8def update(self, *args: Any, **kwargs: Any) -> None:self.rect.y += self.speedif self.rect.y >= 700:self.kill()if self.blood <= 0:self.active = Falseif self.blood <= 4:self.image = self.hit_imageif not self.active:if self.num < 12:self.image = self.destroy_images[self.num]self.num += 1else:self.kill()# 敌方大boss战机精灵组
class Big_boss(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = pygame.image.load(r'images/enemy3_n1.png')self.image_1 = pygame.image.load(r'images/enemy3_n2.png')self.image_2 = pygame.image.load(r'images/enemy3_n1.png')self.hit_image = pygame.image.load(r'images/enemy3_hit.png')self.destroy_image = [pygame.image.load(r'images/enemy3_down1.png'),pygame.image.load(r'images/enemy3_down1.png'),pygame.image.load(r'images/enemy3_down1.png'),pygame.image.load(r'images/enemy3_down2.png'),pygame.image.load(r'images/enemy3_down2.png'),pygame.image.load(r'images/enemy3_down2.png'),pygame.image.load(r'images/enemy3_down3.png'),pygame.image.load(r'images/enemy3_down3.png'),pygame.image.load(r'images/enemy3_down3.png'),pygame.image.load(r'images/enemy3_down4.png'),pygame.image.load(r'images/enemy3_down4.png'),pygame.image.load(r'images/enemy3_down4.png'),pygame.image.load(r'images/enemy3_down5.png'),pygame.image.load(r'images/enemy3_down5.png'),pygame.image.load(r'images/enemy3_down5.png'),pygame.image.load(r'images/enemy3_down6.png'),pygame.image.load(r'images/enemy3_down6.png'),pygame.image.load(r'images/enemy3_down6.png')]self.boss_blood = 200self.rect = self.image.get_rect()self.rect.y = 0self.blood = self.boss_bloodself.num = 0self.active = Trueself.direction = random.choice(('right', 'left'))if self.direction == 'right':self.rect.x = -166else:self.rect.x = 646pygame.time.set_timer(STOP_BIG_BOSS, 10000)def update(self, *args: Any, **kwargs: Any) -> None:for event in pygame.event.get():if event.type == STOP_BIG_BOSS:self.direction = random.choice(('right', 'left'))if self.direction == 'left':self.rect.x -= 2elif self.direction == 'right':self.rect.x += 2else:self.rect.x += 0self.check()# print('boss blood :', self.blood, self.num)if 0 < self.blood <= self.boss_blood / 2:self.image = self.hit_imageelif self.blood <= 0:self.active = Falseif self.num < 18:self.image = self.destroy_image[self.num]self.num += 1else:self.kill()def check(self):global NUMNUM += 1for event in pygame.event.get():if event.type == STOP_BIG_BOSS:self.direction = 'None'if self.rect.x <= 0:self.direction = 'right'elif self.rect.x >= 311:self.direction = 'left'if not NUM % 2:self.image = self.image_1else:self.image = self.image_2# 我方子弹精灵组
class Bullet_M(pygame.sprite.Sprite):def __init__(self, x, y, mode='a', speed=15):super().__init__()self.image = pygame.image.load(r'images/bullet1.png')self.rect = self.image.get_rect()self.speed = speedif mode == 'a':self.rect.y = yself.rect.x = x + 51.5elif mode == 'b':self.rect.y = y + 60self.rect.x = x + 18elif mode == 'c':self.rect.y = y + 60self.rect.x = x + 80elif mode == 'd':self.rect.y = y + 60self.rect.x = x + 35elif mode == 'e':self.rect.y = y + 60self.rect.x = x + 65def update(self, *args: Any, **kwargs: Any) -> None:self.rect.y -= self.speed# 敌方大boos战机子弹精灵组
class Big_boss_bullet(pygame.sprite.Sprite):def __init__(self, boss_x, boss_y, my_x, my_y, speed_object=0):super().__init__()self.image = pygame.image.load(r'images/bullet2.png')self.rect = self.image.get_rect()self.rect.x = boss_x + 85self.rect.y = boss_y + 255self.my_x = my_x + 51self.my_y = my_y + 63self.bullet_speed = random.randint(2, 3) + speed_objectself.direction_dd = self.calulater()def calulater(self):dtx = self.my_x - self.rect.xdty = self.my_y - self.rect.yreturn dtx / dtydef update(self, *args: Any, **kwargs: Any) -> None:self.rect.x += self.bullet_speed * self.direction_ddself.rect.y += self.bullet_speed# 大方战机子弹精灵组
class Bullet_boss1(pygame.sprite.Sprite):def __init__(self, x, y, speed, object_speed):super().__init__()self.image = pygame.image.load(r'images/bullet2.png')self.rect = self.image.get_rect()self.rect.x = x + 34.5self.rect.y = y + 99self.speed = speed + object_speed + random.randint(1, 2)def update(self, *args: Any, **kwargs: Any) -> None:self.rect.y += self.speed# 道具精灵组
class Drop_equipment(pygame.sprite.Sprite):def __init__(self):super().__init__()self.images = {'bullet': pygame.image.load(r'images/bullet_supply.png'),'bomb': pygame.image.load(r'images/bomb_supply.png')}# self.choose = random.choice(('bullet', 'bomb'))self.choose = self.get_choose()# print('choose: ', self.choose)self.choose_info = self.choose# print('choose_info: ', self.choose)self.image = self.images[self.choose]self.rect = self.image.get_rect()self.rect.x = random.randint(0, 422)self.rect.y = 0def get_choose(self):def chose():chose_end = random.choice(('bullet', 'bomb'))return chose_endreturn chose()def update(self, *args: Any, **kwargs: Any) -> None:self.rect.y += 1if self.rect.y == 700:self.kill()
5.创建一个score_data.csv 的csv文件 用于保存玩家的信息(玩家的名字和玩家的最高分数):
总结
pygame模块里面其实还有好多东西等我们来发现,目前我已经把我所有东西分享在这里啦,到这里就就结束了,每一行代码都是我一点点想出来敲出来的呜呜呜,所以喜欢的友友们给个赞,加个关注嘿嘿
经典回顾:用pygame模块做一个飞机大战相关推荐
- 怎么用java做全民飞机大战_Java飞机大战游戏设计与实现
1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...
- 教你用JAVA设计一个飞机大战的游戏
本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库.事件监听以 ...
- 使用ESP-8266模块做一个便携式WIFI杀手
使用ESP-8266模块做一个便携式WIFI杀手 如何用esp8266做个wifi干扰器 声明:此教程仅用于测试和自己玩,请勿用于非法用途,否则后果自负. 其实关于esp8266网上有许多教程,好多前 ...
- 巴法云 使用 esp01s wifi模块 做一个网络智能开关
巴法云 使用 esp01s wifi模块 做一个网络智能开关 前言 一:配置arduino IDE,使其支持ESP8266编程开发 二:esp01s接线问题 1 下载模式 2 运行模式 三:开发环境测 ...
- 基于C#制作一个飞机大战小游戏
此文主要基于C#制作一个飞机大战游戏,重温经典的同时亦可学习. 实现流程 1.创建项目 2.界面绘制 3.我方飞机 4.敌方飞机 5.子弹及碰撞检测 实现流程 1.创建项目 打开Visual Stud ...
- 用python做一个坦克大战
这是一个非常有意思的项目!如果你想用 Python 来做一个坦克大战游戏,可以考虑使用 Pygame 这个库.它是一个专门用于制作游戏的 Python 库,能够帮助你快速开发出一个坦克大战游戏. 首先 ...
- 使用小程序制作一个飞机大战小游戏
此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单. 一.创建小程序 二.页面实现 三.代码块 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填写所需的各项信息进 ...
- pip install pygame_使用 Python 和 Pygame 模块构建一个游戏框架!
这系列的第一篇通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏 ...
- pygame为游戏添加背景_万能的Python和Pygame模块构建一个游戏框架
通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏.这次,我将展示 ...
最新文章
- python基本使用-python-类的基本使用
- vu项目中按F5刷新element菜单没有根据路由匹配菜单解决办法
- 随机重命名MP3文件
- 如何将本地代码上传到GitHub
- 在jsp中使用smartupload组件上传文件- -
- 深度学习(五十五)tensorflow分布式训练
- oracle如何判断奇数偶数_堆垒素数论之旅(1):奇数哥德巴赫猜想
- OpenCV-python学习笔记(二)——image processing图像基本处理
- 心电图数据结构化标准_自己实现一个类 JSON 数据结构
- android 蓝牙设备断开,android 程序屏幕旋转,蓝牙设备断开导致的MainActivity重新创建问题...
- ARCore之路-环境准备
- 抖音热门小视频 视频的md5查看器
- win7电脑蓝屏怎么办
- 自定义一个python日志类
- 教你做表格(史上最全)
- linux运维工程师2017,2017年Linux运维工程师经典面试题汇总
- VS Code 也能预览 Markdown - 一个无意中发现的小技巧
- TIF 和Hdmi cec hotplug热插拔事件过程梳理一
- 书呆子rico_Excel书呆子优胜者的非常恐怖的秋季赠品
- 几何公差之什么是被测要素?被测要素有哪些类型?