开发工具

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

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

原理简介

游戏规则(摘自维基百科):

打砖块是一种电子游戏。屏幕上部有若干层砖块,一个球在屏幕上方的砖块和墙壁、屏幕下方的移动短板和两侧墙壁之间来回弹,当球碰到砖块时,球会反弹,而砖块会消失。玩家要控制萤幕下方的板子,让“球”通过撞击消去所有的“砖块”,球碰到萤幕底边就会消失,所有的球消失则游戏失败。把砖块全部消去就可以破关。

板子操作方式:按“→”向右,按“←”向左。

逐步实现:

游戏实现起来其实非常简单。首先,我们根据游戏规则定义3个游戏精灵类,分别是:

板子类;

球类;

砖块类。

先定义游戏精灵的好处是方便后续游戏精灵类之间的碰撞检测以及游戏精灵的操作管理等。具体而言,对于板子类,其应当具有根据玩家操作而移动等功能,其代码实现如下:

'''板子'''

class Paddle(pygame.sprite.Sprite):

def __init__(self, x, y, width, height, SCREENWIDTH, SCREENHEIGHT, **kwargs):

pygame.sprite.Sprite.__init__(self)

self.init_state = [x, y, width, height]

self.rect = pygame.Rect(x, y, width, height)

self.base_speed = 10

self.SCREENWIDTH = SCREENWIDTH

self.SCREENHEIGHT = SCREENHEIGHT

'''移动板子'''

def move(self, direction):

if direction == 'left':

self.rect.left = max(0, self.rect.left-self.base_speed)

elif direction == 'right':

self.rect.right = min(self.SCREENWIDTH, self.rect.right+self.base_speed)

else:

raise ValueError('Paddle.move.direction unsupport ...' % direction)

return True

'''绑定到屏幕上'''

def draw(self, screen, color):

pygame.draw.rect(screen, color, self.rect)

return True

'''重置'''

def reset(self):

self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3])

return True

对于球类,则由电脑控制其移动方式(比如撞到墙自动换方向等),其代码实现如下:

'''球'''

class Ball(pygame.sprite.Sprite):

def __init__(self, x, y, radius, SCREENWIDTH, SCREENHEIGHT, **kwargs):

pygame.sprite.Sprite.__init__(self)

self.init_state = [x, y, radius*2, radius*2]

self.rect = pygame.Rect(x, y, radius*2, radius*2)

self.base_speed = [5, 5]

self.direction = [random.choice([1, -1]), -1]

self.radius = radius

self.SCREENWIDTH = SCREENWIDTH

self.SCREENHEIGHT = SCREENHEIGHT

'''移动球'''

def move(self):

self.rect.left += self.direction[0] * self.base_speed[0]

self.rect.top += self.direction[1] * self.base_speed[1]

if self.rect.left <= 0:

self.rect.left = 0

self.direction[0] = -self.direction[0]

elif self.rect.right >= self.SCREENWIDTH:

self.rect.right = self.SCREENWIDTH

self.direction[0] = -self.direction[0]

if self.rect.top <= 0:

self.rect.top = 0

self.direction[1] = -self.direction[1]

elif self.rect.bottom >= self.SCREENHEIGHT:

return False

return True

'''改变运动速度和方向(与拍相撞时)'''

def change(self):

self.base_speed = [random.choice([4, 5, 6]), random.choice([4, 5, 6])]

self.direction = [random.choice([1, -1]), -1]

return True

'''绑定到屏幕上'''

def draw(self, screen, color):

pygame.draw.circle(screen, color, (self.rect.left+self.radius, self.rect.top+self.radius), self.radius)

return True

'''重置'''

def reset(self):

self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3])

return True

对于砖块类,则比较简单,其代码实现如下:

'''砖块'''

class Brick(pygame.sprite.Sprite):

def __init__(self, x, y, width, height, **kwargs):

pygame.sprite.Sprite.__init__(self)

self.init_state = [x, y, width, height]

self.rect = pygame.Rect(x, y, width, height)

'''绑定到屏幕上'''

def draw(self, screen, color):

pygame.draw.rect(screen, color, self.rect)

return True

'''重置'''

def reset(self):

self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3])

return True

然后和以前一样,多弄几个关卡,每个关卡地图都用一个.level文件来设计定义,例如这样:

图片

其中B代表砖块所在的位置。

OK,接下来可以考虑实现游戏主循环了。基本的逻辑就是:

图片

即每关结束判断一下是过关了还是GG了,过关了就进入下一关,否则就直接进入结束界面。当然最后一关是个例外,因为结束之后肯定要进入结束界面。具体而言,主逻辑代码实现如下:

def run(self):

while True:

self.__startInterface()

for idx, levelpath in enumerate(self.cfg.LEVELPATHS):

state = self.__runLevel(levelpath)

if idx == len(self.cfg.LEVELPATHS)-1:

break

if state == 'win':

self.__nextLevel()

else:

break

if state == 'fail':

self.__endInterface(False)

else:

self.__endInterface(True)

至于每部分如何实现,就不贴了(贴上来还得调格式,麻烦),都很简单。具体自己看相关文件里的源代码吧。

All done完整源代码欢迎与我交流~

打砖块python游戏源代码_python制作一个打砖块小游戏相关推荐

  1. python编辑简单小游戏大全_Python制作简单的滑雪小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块.关注公众号:Python学习指南,回复"滑雪"获取源码 环境搭建 安装Pyt ...

  2. python打地鼠脚本_制作一个打地鼠的小游戏!100行Python代码轻松搞定

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于萝卜大杂烩 ,作者周萝卜 游戏画面 首先先进行游戏画面排版, classTopWin ...

  3. Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉

    Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉,小兔子跳跳,按空格键向上跳跃,按键盘方向键进行左右移动,以避开飞弹,以防被炸,还可以捡到火箭道具哦. 完整程序下载地址:Python跳跳兔小游 ...

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

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

  5. 网页版打地鼠小游戏源代码,网页版打灰太狼小游戏源码

    网页版打地鼠小游戏源代码,网页版打灰太狼小游戏源码 完整代码下载地址:网页版打地鼠小游戏源代码,网页版打灰太狼小游戏源码 核心代码 <!DOCTYPE html> <html> ...

  6. 100行代码,使用 Pygame 制作一个贪吃蛇小游戏!

    作者 | 周萝卜 来源 | 萝卜大杂烩 相信我们大家都玩过贪吃蛇游戏,今天我们就从头一起来写一个贪吃蛇小游戏,只需要100多行的代码就完成了. 用到的 Pygame 函数 贪吃蛇小游戏用到的函数 功能 ...

  7. 用turtle库制作一个简单的小游戏《鸡子大战篮球》

    刚上大学,学习python不到两月半,连简单的字典.元组数据类型都还没有捂熟.这不刚好python小组作业是用turtle库画自己喜欢的图案吗,在我们小组的努力下我们画好了5只小只因,于是我就大胆的进 ...

  8. html做的小游戏,用Html做一个“快乐鸟”小游戏

    入门学习前端的时候做了这么一个简单的小游戏,为了将自己所学到的知识运用起来. 这里可以看出还是有BUG的,死亡动画不是在死亡的瞬间触发 做这个小游戏用到了: html css jQuery 然后这个小 ...

  9. 用python做一个坦克小游戏_Python制作经典坦克大战小游戏

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

  10. 微信小程序|使用小程序制作一个足球拼图小游戏

    世界杯的意义永远不止是冠军,它是每个精彩的瞬间,是呐喊,是青春.此文用小程序制作一个足球的拼图小游戏,一起为世界杯疯狂吧! 开发步骤 一.工具安装 二.功能实现 1 . 提示图展示 2 . 绘制画布内 ...

最新文章

  1. 单击浏览器右上角的X弹出提示窗口
  2. 长连接和Keepalive详解
  3. geoserver矢量瓦片发服务前端展示偏移问题解决
  4. npm + webpack +react
  5. centos下设置自启动和配置环境变量的方法
  6. py-R-FCN安装
  7. 如何在Mac系统中修改设备名称
  8. ai的预览模式切换_ai预览模式怎么退出
  9. 函数图像的变换 与 解析式的变换 之关系
  10. IE浏览器验证码不刷新
  11. 【交流学习】厦门大学到福州大禹电子交流超声波水下通讯技术
  12. 【Lua 入门基础篇(七)】表模块与包
  13. UART总线协议——esp32学习笔记
  14. html简单下拉菜单
  15. R语言参数检验多重比较
  16. 付费学习,花钱比意志力靠谱
  17. C语言学习总结(三)-----函数指针
  18. webstorm2019 汉化后无法设置 webstorm最新汉化包
  19. tokenizer.encode_plus方法
  20. 性能测试 - - 常见的性能测试指标

热门文章

  1. 纯web端实现二维码识别
  2. 谈一谈Normalize.css
  3. ftp服务器上的文件夹是否存在,检查FTP服务器上是否存在文件
  4. 搜狗输入法双拼 linux,Ubuntu搜狗输入法设置双拼
  5. 黑莓bold模拟器无法上网问题之解决
  6. QML之gradient
  7. php mp3播放列表,ubuntu的本地MP3音乐播放器mpd+mpc
  8. ESP32增加文件夹及文件
  9. mac系统如何管理桌面图标
  10. Java黑皮书编程练习题6.08(摄氏度和华氏度之间的转换)