糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 【Python游戏】实现一个恶搞游戏 粉丝大战xxx小游戏(狗头保命) | 附带源码

【Python游戏】实现一个恶搞游戏 粉丝大战xxx小游戏(狗头保命) | 附带源码

时间:2020-06-16 14:00:02

相关推荐

【Python游戏】实现一个恶搞游戏 粉丝大战xxx小游戏(狗头保命) | 附带源码

前言

今天的实现的小游戏可能多少有点讨打,希望我的粉丝们能够看在小编每天更新小游戏的份上,能够不找我麻烦,哈哈哈~

粉丝大战xxx好像不是不可以的样子,哈哈哈(狗头保命),千万不要掉粉啊

其实就是一个消灭外星人小游戏的一个改版啦!!

开发环境

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

效果展示

废话不多说,我们开始代码实现过程

代码实现

主函数

import pygamefrom settings import Settingsfrom ship import Shipimport game_functions as gffrom pygame.sprite import Groupfrom game_stats import GameStatsfrom button import Buttonfrom scoreboard import Scoreboarddef run_game():# 初始化游戏并创建一个屏幕对象pygame.init()ai_settings = Settings()screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))pygame.display.set_caption("粉丝大战xxx 公众号:Python日志 Python学习交流群:773162165")# 创建一个用于存储游戏统计信息的实例,并创建记分牌stats = GameStats(ai_settings)sb = Scoreboard(ai_settings, screen, stats)# 创建一个道宽ship = Ship(ai_settings, screen)# 创建一个用于存储子弹的编组bullets = Group()# 创建一个外星人组aliens = Group()# 创建外星人群gf.create_fleet(ai_settings, screen, ship, aliens)# 创建一个开始按钮play_button = Button(ai_settings, screen, "PLAY")# 开始游戏的主循环while True:gf.check_events(ai_settings, screen, stats, play_button,ship, aliens, bullets)if stats.game_active:ship.update()gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens, bullets)gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)gf.update_screen(ai_settings, screen, stats, sb,ship, aliens, bullets, play_button)run_game()

一个对道宽发射的子弹进行管理的类

class Bullet(Sprite):"""一个对道宽发射的子弹进行管理的类"""def __init__(self, ai_settings, screen, ship):"""在道宽所在位置创建一个子弹的对象"""# super(Bullet, self).__init__() python2.7的方法super().__init__() # python3的方法self.screen = screen# 在(0,0)处创建一个表示子弹的矩形,再设置正确的位置self.rect = pygame.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height)self.rect.centerx = ship.rect.centerxself.rect.top = ship.rect.top# 存储用小数表示的子弹位置self.y = float(self.rect.y)self.color = ai_settings.bullet_colorself.speed_factor = ai_settings.bullet_speed_factordef update(self):"""向上移动子弹"""# 更新表示子弹位置的小数值self.y -= self.speed_factor# 更新表示子弹的rect的位置self.rect.y = self.ydef draw_bullet(self):"""在屏幕上绘制子弹"""pygame.draw.rect(self.screen, self.color, self.rect)

按钮

import pygame.fontclass Button():def __init__(self, ai_settings, screen, msg):"""初始化按钮的属性"""self.screen = screenself.screen_rect = screen.get_rect()# 设置按钮的尺寸和其他属性self.width = 200self.height = 50self.button_color = (0, 255, 0)self.text_color = (255, 255, 255)self.font = pygame.font.SysFont(None, 48)# 创建按钮的rect对象,并使其居中self.rect = pygame.Rect(0, 0, self.width, self.height)self.rect.center = self.screen_rect.center# 按钮的标签只需创建一次self.prep_msg(msg)def prep_msg(self, msg):"""将msg渲染成为图像,并将其在按钮上居中"""self.msg_image = self.font.render(msg, True, self.text_color, self.button_color)self.msg_image_rect = self.msg_image.get_rect()self.msg_image_rect.center = self.rect.centerdef draw_button(self):# 绘制一个用颜色填充的按钮,再绘制文本self.screen.fill(self.button_color, self.rect)self.screen.blit(self.msg_image, self.msg_image_rect)

显示得分信息的类

class Scoreboard():"""显示得分信息的类"""def __init__(self, ai_settings, screen, stats):"""初始化显示得分涉及的属性"""self.screen = screenself.screen_rect = screen.get_rect()self.ai_settings = ai_settingsself.stats = stats# 显示得分信息时使用的字体设置self.text_color = (30, 30, 30)self.font = pygame.font.SysFont(None, 48)# 准备得分图像self.prep_score()def prep_score(self):"""将得分转换为一幅渲染的图像"""score_str = str(self.stats.score)self.score_image = self.font.render(score_str, True, self.text_color,self.ai_settings.bg_color)# 将得分放在屏幕右上角self.score_rect = self.score_image.get_rect()self.score_rect.right = self.screen_rect.right - 20self.score_rect.top = 20def show_score(self):"""在屏幕上显示得分"""self.screen.blit(self.score_image, self.score_rect)

存储游戏的所有设置的类

class Settings():"""存储游戏的所有设置的类"""def __init__(self):"""初始化游戏的静态设置"""# 屏幕设置self.screen_width = 1200self.screen_height = 780self.bg_color = (230, 230, 230)# 道宽的设置self.ship_limit = 3# 子弹的设置self.bullet_width = 3self.bullet_height = 15self.bullet_color = 60, 60, 60self.bullet_allowed = 6# 外星人设置self.fleet_drop_speed = 10# 以什么样的速度加快游戏节奏self.speedup_scale = 1.1self.initialize_dynamic_settings()def initialize_dynamic_settings(self):"""初始化随游戏进行而改变的设置"""self.ship_speed_factor = 1.5self.bullet_speed_factor = 3self.alien_speed_factor = 1# fleet_direction为1表示向右移,为-1表示向左移self.fleet_direction = 1# 外星人计分self.alien_points = 50def increase_speed(self):"""提高速度设置"""self.ship_speed_factor *= self.speedup_scaleself.bullet_speed_factor *= self.speedup_scaleself.alien_speed_factor *= self.speedup_scale

如果大家想恶搞一下自己的朋友的话可以在在这里修改一下图片就可以啦!

首先你可以找一张你朋友的照片,放入images文件夹中,然后在下面代码中修改你朋友照片名称就好啦!是不是很简单呢,哈哈哈

快去恶搞你的朋友吧!

# 加载道宽的位置self.image = pygame.image.load('images/fensi.bmp')self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()

公众号【Python日志】

需要源码的小伙伴可以在公众号回复粉丝大战xxx

如果觉得《【Python游戏】实现一个恶搞游戏 粉丝大战xxx小游戏(狗头保命) | 附带源码》对你有帮助,请点赞、收藏,并留下你的观点哦!

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