Pygame-依葫芦画瓢之兔獾大战


前几天看到国外一个12岁的孩子写的兔獾大战游戏,心生敬佩,想当年我还是12岁的时候还不知电脑为何物,连小霸王都未曾玩过。自己也未曾想去搞游戏开发,纯属自娱自乐。在此心态下,依葫芦画瓢重新架构了一下该游戏。

1. 参考资料

1.Kill Console 的PC版微信打飞机

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-依葫芦画瓢之兔獾大战的更多相关文章

  1. pygame小游戏之坦克大战

    以前在学校的时候无聊的学了会pygame.看了大概一周的教学视频,做出来个坦克大战的小游戏 Python3.5  pycharm import pygame,sys,time from random ...

  2. Python3+pygame实现的90坦克大战 代码完整 有演示效果

    我是一个典型的80后,年轻时玩过了特别多的游戏,所以这几天用Python3+pygame实现了一个另外小游戏"坦克大战"(其他的游戏,请翻阅我的博客) 本实例代码量有些多,完整的版 ...

  3. 11.pygame飞机大战游戏整体代码

    主程序 # -*- coding: utf-8 -*- # @Time: 2022/5/20 22:26 # @Author: LiQi # @Describe: 主程序 import pygame ...

  4. 6.pygame-搭建主程序

    职责明确 新建plane_main.py 封装主游戏类 创建游戏对象 启动游戏   新建plane_sprites.py 封装游戏中所有需要使用的精灵子类 提供游戏的相关工具 #plane_sprit ...

  5. 炸掉你的城堡!(pygame獾兔大战)

    代码修改bug,添加注释等,獾的速度加快之后很难-- git地址: https://github.com/Jailman/blowupyrcastle.git 游戏资源使用了文章中附带的下载,原版文章 ...

  6. python(pygame)滑稽大战(类似飞机大战) 教程

    成品已录制视频投稿B站(本文目前实现了基础的游戏功能),点击观看项目稽忽悠不(github)地址:https://github.com/BigShuang/From-simple-to-Huaji 本 ...

  7. 基于pygame实现飞机大战【面向过程】

    一.简介 pygame 顶级pygame包 pygame.init - 初始化所有导入的pygame模块 pygame.quit - uninitialize所有pygame模块 pygame.err ...

  8. Python飞机大战实例有感——pygame如何实现“切歌”以及多曲重奏?

    目录 pygame如何实现"切歌"以及多曲重奏? 一.pygame实现切歌 初始化路径 尝试一 尝试二 尝试三 成功 总结 二.如何在python多线程顺序执行的情况下实现音乐和音 ...

  9. pyinstaller相关问题 & pygame文件打包成exe文件 & 武装飞船 & 飞机大战

    自己照书写了一个飞机大战游戏的python程序,想把它打包成一个exe文件,在查阅相关教程并经过数次尝试后终于成功. 安装打包应用 pyinstaller 在cmd命令窗口下pip install p ...

随机推荐

  1. NOIP2017 列队——平衡树

    平衡树蒟蒻,敲了半天. 其实思路很简单,就是把许多个人合并成一个区间.必要的时候再拆开.(是不是和这个题的动态开点线段树有异曲同工之妙?) 每次操作最多多出来6个点. 理论上时间复杂度是nlogn,空 ...

  2. JavaScript倒计时脚本

    JavaScript倒计时在Web中用得非常广泛,比如常见的团购啊.还有什么值得期待的事情,都可以用到倒计时.现在举了四个例子,比如时间长的倒计时,小时倒计时,最简的倒计时,还有秒表等等,应该可以满足 ...

  3. MySQL、Oracle、DB2等数据库常规排序、自定义排序和按中文拼音字母排序

    MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3中比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 ...

  4. redis中如何对 key 进行分类

    因为redis中的 hash是不支持设置过期时间的,如果我们要 设置过期时间,还要分类存储,可以用下面折中的方法 其实就是我们把 key 定义的有规律一些,通过在key的字符串内部 分类,上图只是因为 ...

  5. caffe数据集——LMDB

    LMDB介紹 Caffe使用LMDB來存放訓練/測試用的數據集,以及使用網絡提取出的feature(為了方便,以下還是統稱數據集).數據集的結構很簡單,就是大量的矩陣/向量數據平鋪開來.數據之間沒有什 ...

  6. 【题解】Matrix BZOJ 4128 矩阵求逆 离散对数 大步小步算法

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4128 大水题一道 使用大步小步算法,把数字的运算换成矩阵的运算就好了 矩阵求逆?这么基础的线 ...

  7. bzoj 1568 [JSOI2008]Blue Mary开公司 超哥线段树

    [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1808  Solved: 639[Submit][Sta ...

  8. HDU1298 字典树+dfs

    T9 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  9. ListView - SimpleAdapter 行间颜色交替(转)

    一.概述 通过扩展SimpleAdapter,来改变显示外观.因为要每行的显示颜色,首先要获得每行的View实例,然后调用setBackgroundColor函数设置. 二.实例 [效果] [代码片段 ...

  10. centos中mysql的安装

    一:前沿 过完年了,花了不少钱啊!本来还打算买电脑的了,结果这个事情还是的延期啊!苍天啊!刚刚也看了下,一台苹果也大概是1w左右!买吧!boy!别犹豫了吧!好吧现在来说说我自己的工作吧!现在过完年到公 ...