目录

前言

一、安装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模块做一个飞机大战相关推荐

  1. 怎么用java做全民飞机大战_Java飞机大战游戏设计与实现

    1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...

  2. 教你用JAVA设计一个飞机大战的游戏

    本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库.事件监听以 ...

  3. 使用ESP-8266模块做一个便携式WIFI杀手

    使用ESP-8266模块做一个便携式WIFI杀手 如何用esp8266做个wifi干扰器 声明:此教程仅用于测试和自己玩,请勿用于非法用途,否则后果自负. 其实关于esp8266网上有许多教程,好多前 ...

  4. 巴法云 使用 esp01s wifi模块 做一个网络智能开关

    巴法云 使用 esp01s wifi模块 做一个网络智能开关 前言 一:配置arduino IDE,使其支持ESP8266编程开发 二:esp01s接线问题 1 下载模式 2 运行模式 三:开发环境测 ...

  5. 基于C#制作一个飞机大战小游戏

    此文主要基于C#制作一个飞机大战游戏,重温经典的同时亦可学习. 实现流程 1.创建项目 2.界面绘制 3.我方飞机 4.敌方飞机 5.子弹及碰撞检测 实现流程 1.创建项目 打开Visual Stud ...

  6. 用python做一个坦克大战

    这是一个非常有意思的项目!如果你想用 Python 来做一个坦克大战游戏,可以考虑使用 Pygame 这个库.它是一个专门用于制作游戏的 Python 库,能够帮助你快速开发出一个坦克大战游戏. 首先 ...

  7. 使用小程序制作一个飞机大战小游戏

    此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单. 一.创建小程序 二.页面实现 三.代码块 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填写所需的各项信息进 ...

  8. pip install pygame_使用 Python 和 Pygame 模块构建一个游戏框架!

    这系列的第一篇通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏 ...

  9. pygame为游戏添加背景_万能的Python和Pygame模块构建一个游戏框架

    通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏.这次,我将展示 ...

最新文章

  1. python基本使用-python-类的基本使用
  2. vu项目中按F5刷新element菜单没有根据路由匹配菜单解决办法
  3. 随机重命名MP3文件
  4. 如何将本地代码上传到GitHub
  5. 在jsp中使用smartupload组件上传文件- -
  6. 深度学习(五十五)tensorflow分布式训练
  7. oracle如何判断奇数偶数_堆垒素数论之旅(1):奇数哥德巴赫猜想
  8. OpenCV-python学习笔记(二)——image processing图像基本处理
  9. 心电图数据结构化标准_自己实现一个类 JSON 数据结构
  10. android 蓝牙设备断开,android 程序屏幕旋转,蓝牙设备断开导致的MainActivity重新创建问题...
  11. ARCore之路-环境准备
  12. 抖音热门小视频 视频的md5查看器
  13. win7电脑蓝屏怎么办
  14. 自定义一个python日志类
  15. 教你做表格(史上最全)
  16. linux运维工程师2017,2017年Linux运维工程师经典面试题汇总
  17. VS Code 也能预览 Markdown - 一个无意中发现的小技巧
  18. TIF 和Hdmi cec hotplug热插拔事件过程梳理一
  19. 书呆子rico_Excel书呆子优胜者的非常恐怖的秋季赠品
  20. 几何公差之什么是被测要素?被测要素有哪些类型?

热门文章

  1. 相比于传统的 App,基于小程序所设计导出的 App 有什么优点
  2. win10版officelens下载appx文件
  3. 从一碗面条到一碗浆糊,再到哪里?
  4. 意法半导体(ST)加入RT-Thread会员计划,正式成为金牌会员
  5. SQL语句 第11章 复合数据类型
  6. 得力针式打印机常见问题及解决方法
  7. HTML代码实现简易购物车
  8. springboot集成支付宝沙箱支付
  9. 【个人回顾】C语言程序设计-第三版-何钦铭主编-4
  10. 别把“新型啃老”误认为那是你向往的一种躺平生活!