前言

今天的实现的小游戏可能多少有点讨打,希望我的粉丝们能够看在小编每天更新小游戏的份上,能够不找我麻烦,哈哈哈~
粉丝大战xxx好像不是不可以的样子,哈哈哈(狗头保命),千万不要掉粉啊
其实就是一个消灭外星人小游戏的一个改版啦!!

开发环境

Python版本:3.6.4
相关模块:
pygame模块;
以及一些Python自带的模块。

环境搭建

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

效果展示

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

代码实现

主函数

import pygamefrom settings import Settings
from ship import Ship
import game_functions as gf
from pygame.sprite import Group
from game_stats import GameStats
from button import Button
from 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小游戏(狗头保命) | 附带源码相关推荐

  1. 【Python游戏】用Python实现一个测试你智商的小游戏——24点,过不了三关的都是细狗 | 附带源码

    前言 好咯,包子们下午好 今天小编主要是过来测试一下大家的智商,没别的意思,不是看不起大家,我感觉今天实现的小游戏,可能大家真的过不了三关! 哈哈哈,废话不多说吧 直接开始我们的游戏实现功能 相关文件 ...

  2. 【Python项目】520必备表白神器合集,程序员的浪漫 | 附带源码

    相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号:Python日志 可以关注小编公众号,会不定时的发布一下Python小技巧,还有很多资源可以免费领取哟!! 源码领取:加Pyth ...

  3. android做一个坦克大战小游戏_一个 ECharts 做的猜数小游戏

    大概 1 年多之前,一位老同学找到我,问能不能帮他做一个非常简单的猜数字游戏,需求是这样的: 在 1 到 100 的整数里,随机选一个数字,让小朋友们猜: 如果猜错了,告知小朋友猜大了还是猜小了: 如 ...

  4. PyQT5学习之旅 1 如何自定义控件,入门做一个上位电脑串口调试软件,全部开源。(附带源码)

    文章目录 一.前言 二.开发的必备工具 2.1 PyCharm 如何集成 QT Designer UI代码转可视化 可视转化UI代码 打包成 exe 软件: 2.2.引进自定义控件 移除此控件为自定义 ...

  5. python循环10次_开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择...

    开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择 "+.-.*"运算符,构成一个表达式, 让用户计算式子结果并输入结果,如果计算 ...

  6. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

  7. c语言小程序飞机大战,飞机大战微信小游戏:经典像素飞机大战小程序,点开即玩...

    50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <经典像素飞机大战>游戏小程序好玩吗? <经典像素飞机大战>小游戏怎么玩? 怎么进入&l ...

  8. Python游戏开发,Python实现童年小游戏推箱子 附带源码

    开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 上效果图 原理简 ...

  9. C语言编写的坦克大战exe小游戏

    C语言编写的坦克大战exe小游戏! (含有部分C++函数,不过不需要知道实现细节,主要用于键盘读取等) 适合初学者学习的坦克大战代码,无图片,游戏全部功能画面显示全部由 printf 打印的哦! C+ ...

  10. 开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择

    开发一个循环 5 次计算的小游戏, 设置随机种子为10,每次随机产生两个 1~10的数字以及随机选择 "+.-.*"运算符,构成一个表达式, 让用户计算式子结果并输入结果,如果计算 ...

最新文章

  1. s5原生android 5.0,三星Galaxy S5升级Android 5.0:美味棒棒糖
  2. 中国最好的电子商务平台,75商务网成功上线
  3. 前端学习(848):为什么学习节点操作和节点简介
  4. LeetCode 第 199 场周赛(757/5231,前14.5%)
  5. 火星首座NFT虚拟房屋以超过50万美元价格售出
  6. MaxScript学习 | 创建石头
  7. 【FPGA目标跟踪】基于FPGA的帧差法和SAD匹配算法的目标跟踪实现
  8. ERP原理 : 第五节 销售管理的工作原理
  9. mac安装win7流程 win7提示无法验证数字签名的解决
  10. MATLAB将MP4转为GIF
  11. 树莓派+android+盒子,树莓派3安装Android TV系统图文教程
  12. inveta PLSB 点线面体 示例工程
  13. teamviewer存在linux版本_TeamViewer 9发布-在Linux下安装运行
  14. 基于Pushlet实现的网站消息推送
  15. 软件安全测试之系统安全测试
  16. python把文本转换为html_Python基础教程——把文本转为HTML格式
  17. Doris的基本概述
  18. python用户手册是什么_Wind量化平台-用户手册(Python).pdf
  19. QT5.7.0 arm开发环境搭建
  20. 云管边端架构图_【学术论文】车路协同的云管边端架构及服务研究​

热门文章

  1. Java经典兔子问题(10个月幼兔,小兔,成兔数量各多少对?)
  2. quartz 每月一次_quartz cron表达式 每周一0点怎么设置
  3. iMeta | 深圳先进院戴磊组开发可同时提取共存菌株的组成和基因成分谱的菌株分析工具...
  4. [verilog] 八位比较器
  5. windows/linux远程开关机原理及实现
  6. 【题解:洛谷4186||USACO18JAN Cow at Large G】
  7. 【FinE】远期、期货、互换定价
  8. R绘图笔记 | 生存曲线的绘制
  9. java程序判断是否是闰年_用Java程序判断是否是闰年
  10. 代码查重 EOJ Monthly 2018.4