Pygame-依葫芦画瓢之兔獾大战
Pygame-依葫芦画瓢之兔獾大战
前几天看到国外一个12岁的孩子写的兔獾大战游戏,心生敬佩,想当年我还是12岁的时候还不知电脑为何物,连小霸王都未曾玩过。自己也未曾想去搞游戏开发,纯属自娱自乐。在此心态下,依葫芦画瓢重新架构了一下该游戏。
1. 参考资料
2.Garfielt 翻译的青少年如何使用 Python 开始游戏开发
2. 游戏介绍
此游戏基本思想是兔子和敌人獾之间的战斗故事,兔子需要保护自己的窝(城堡)不被獾侵入,通过自己的武器(箭)杀死来犯之敌。在此过程中,兔子可通过杀死的敌人数累积自己的分数值,如果分数累加到设定Win值,则GameWin;箭碰到獾之后,检测是否击中(检测碰撞区域),如果击中则獾和箭同时消失;獾随机生成,并以一定的速度向城堡进攻,如果与兔子相撞,则GameOver,否则当进入城堡后(检测碰撞区域)随机降低城堡的生命值,当城堡生命值降为零时GameOver。
3.精灵介绍
从上述游戏介绍中,我们可知游戏基本精灵有:兔子,獾,城堡,箭。所以就这四类精灵分别封装相应的精灵子类,该子类继承自pygame.sprite.Sprite。这样以便在游戏操作中控制精灵。
4.主游戏
与原始程序相比,我在此基础上稍微改进了一下,改进的地方如下:
1). 引入一个BB类,对所有操作进行封装。
2). 更改游戏策略,原先游戏是通过鼠标点击来发射武器,并通过移动鼠标来改变兔子的方向,改进后的游戏是自己发射武器(借鉴Kill >Console的思路),并去掉鼠标改变兔子方向的操作,此动作一开始我也加入了,但在调用pygame.transform.rotate时出现out of memory错误,所以后来又把它删除了。
3). 原始游戏通过计时来控制游戏进度,改进后使用分数来控制进度,我觉得这样简便些。
4). 兔子的移动控制也借鉴了Kill Console的思路,在此感谢他的工作。
5. 游戏效果
5.1 游戏界面

5.2 Gameover界面

5.3 GameWin界面

6. 游戏代码
游戏代码分两个文件,一个文件bb.py为主程序代码,另一个文件bbSprite.py为游戏精灵封装代码。所有代码和游戏所需资源都放在Github中,链接如下:
http://ballwql.github.com/pygame
Pygame-依葫芦画瓢之兔獾大战的更多相关文章
- pygame小游戏之坦克大战
以前在学校的时候无聊的学了会pygame.看了大概一周的教学视频,做出来个坦克大战的小游戏 Python3.5 pycharm import pygame,sys,time from random ...
- Python3+pygame实现的90坦克大战 代码完整 有演示效果
我是一个典型的80后,年轻时玩过了特别多的游戏,所以这几天用Python3+pygame实现了一个另外小游戏"坦克大战"(其他的游戏,请翻阅我的博客) 本实例代码量有些多,完整的版 ...
- 11.pygame飞机大战游戏整体代码
主程序 # -*- coding: utf-8 -*- # @Time: 2022/5/20 22:26 # @Author: LiQi # @Describe: 主程序 import pygame ...
- 6.pygame-搭建主程序
职责明确 新建plane_main.py 封装主游戏类 创建游戏对象 启动游戏 新建plane_sprites.py 封装游戏中所有需要使用的精灵子类 提供游戏的相关工具 #plane_sprit ...
- 炸掉你的城堡!(pygame獾兔大战)
代码修改bug,添加注释等,獾的速度加快之后很难-- git地址: https://github.com/Jailman/blowupyrcastle.git 游戏资源使用了文章中附带的下载,原版文章 ...
- python(pygame)滑稽大战(类似飞机大战) 教程
成品已录制视频投稿B站(本文目前实现了基础的游戏功能),点击观看项目稽忽悠不(github)地址:https://github.com/BigShuang/From-simple-to-Huaji 本 ...
- 基于pygame实现飞机大战【面向过程】
一.简介 pygame 顶级pygame包 pygame.init - 初始化所有导入的pygame模块 pygame.quit - uninitialize所有pygame模块 pygame.err ...
- Python飞机大战实例有感——pygame如何实现“切歌”以及多曲重奏?
目录 pygame如何实现"切歌"以及多曲重奏? 一.pygame实现切歌 初始化路径 尝试一 尝试二 尝试三 成功 总结 二.如何在python多线程顺序执行的情况下实现音乐和音 ...
- pyinstaller相关问题 & pygame文件打包成exe文件 & 武装飞船 & 飞机大战
自己照书写了一个飞机大战游戏的python程序,想把它打包成一个exe文件,在查阅相关教程并经过数次尝试后终于成功. 安装打包应用 pyinstaller 在cmd命令窗口下pip install p ...
随机推荐
- 2017-7-18-每日博客-关于Linux下的鲜为人知的10条命令.doc
这篇文章的目的是介绍一些少有人知的Linux命令,它们一定会高效地帮你管理你的桌面/服务器. 1. sudo !!命令 没有特定输入sudo命令而运行,将给出没有权限的错误.那么,你不需要重写整个命令 ...
- JavaScript中字符串与16进制之间的转换
一.字符串转换为16进制 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- [codeforces/edu5]总结(F)
链接:http://codeforces.com/contest/616 A题: 统一成1e6长度的字符串,右对齐比较字典序. B题: 求所有行的最小值,里面最大的那个.暴力. C题: 先用dfs给每 ...
- MySql 利用函数 查询所有子节点
前提:mysql 函数 find_in_set(str,strlist), cast(value as type) 一.find_in_set(str,strlist):如果字符串str是在的 ...
- 图论:最短路-SPFA
该算法由Bellman-Ford算法演变过来,首先介绍一下Bellman-Ford算法 最短路最多经过n-1个点,可以用n-1轮松弛操作来得到 ;i<n;i++) d[i]=INF; d[]=; ...
- 【Contest Hunter【弱省胡策】Round #0-Flower Dance】组合数学+DP
题目链接: http://ch.ezoj.tk/contest/%E3%80%90%E5%BC%B1%E7%9C%81%E8%83%A1%E7%AD%96%E3%80%91Round%20%230/F ...
- 【BZOJ4491】我也不知道题目名字是什么 [线段树]
我也不知道题目名字是什么 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 给定一个序列A[i ...
- 【洛谷 P3402】 【模板】可持久化并查集
题目链接 可持久化并查集,就是用可持久化线段树维护每个版本每个节点的父亲,这样显然是不能路径压缩的,否则我们需要恢复太多状态. 但是这并不影响我们启发式合并,于是,每次把深度小的连通块向深度大的上并就 ...
- bzoj 1052 dfs
首先可以二分答案,将最优性问题转化为判定性问题. 对于二分到的边长,我们可以把所有的点看成一个大的矩形,这个矩形为包括所有点的最小矩形,那么贪心的想,3个正方形,第一个肯定放在这个矩形其中的一角,然后 ...
- eclipse+EGIT+GitHub
下载EGIT:http://wiki.eclipse.org/EGit/FAQ#Where_can_I_find_older_releases_of_EGit.3F 1.下载eclipse版本对应的E ...