前言

周末到了,不想给大家太多的压力,今天就给大家分享一个比较简单的弹球小游戏吧。这无聊的周末又有事可以做了,nice…

先看一下我们的最终效果图

我们分9步来讲解如何写这个小游戏

1.创建游戏的主界面

我们用Python的内置模块Tkinter来完成了,它是Python的标准GUI工具包,可以非常方便在制作GUI小工具,因为是跨平台的,可以方便的在

win和linux下运行,我们用Tk里的canvas绘图功能来制作一个小游戏.先来把主界面画出来

Python源码\素材\插件加Q群:906715085###
1).创建一个tk的实例2).然后给这个窗口取一个名字叫game3).通知窗口管理器调整布局大小,0,0表示不能被拉升4).创建一个长为400*500的界面,背景色为默认,边框为厚度为05).通知窗口管理器注册组件6).刷新一下界面

2.创建一个Ball球的类

好主界面有了,我们就开始创建球

1)首先我们创建一个Ball的类,这个类的初始化参数有两个:一个canvas也就是画图用来画一个球,一个是color,表示球的颜色2)在类的初始化的函数里面•初始化canvas,

•画一个实心的球并记录下它的id

•创建球的默认在主界面上的位置,我们把它放屏幕中间

然后让球出现在主界面上:

3.我们让球向上动起来

刚才在Ball类里面有一个draw函数,我们现在在draw里面加点东西,让球向上运动

4.让球能回弹

1).第三步我们球能向上运动,现在我们要让它能碰到墙壁反弹

•我们刚才是把self.canvas.move(self.id,0,-1)写死0,-1,表示x坐标不动,y坐标不断的-1也就是球在向上运动

•现在我们把这两个值设成两个变量self.x,self.y,当我们的球运动到上边界的时候,就把self.y加1,也就向下运行,

•当运动到下边界的时候,就把self.y减1,表示向上运行

2).那么如何判断球已经碰壁了,很简单,我们动态的去球的坐标[x1,y1,x2,y2],

•x1,y1 表示top-left 左上角的坐标

•x2,y2 表示bottom-right右下角的坐标

获取了球的坐标之后(它是一个list),判断一下pos[1]和pos[3]就可以了

5.增加球的运行方向

现在我们的球的运动方向是固定的,我们希望每次球的运动方向要随机,不然太low了,怎么做呢,很简单增加一个随机函数就可以了

在__init__()函数里面,我们改一下

self.x = 0self.y = -1

变成:

 starts=[-3,-2,-1,1,1,2,3]random.shuffle(starts)self.x=starts[0]#从list里面随机取一个self.y=-3#-3表示y轴运动的速度

6.增加小木板

现在我们的球已经可以在界面上到处乱窜了,我们现在增加一个木板来打弹球

7.让木板可以移动

我们通过绑定一些键盘事件,让木板可以移动

增加2个函数,左移和右移,有同学会问evt是啥,不急下面会说.

def turn_left(self, evt):self.x = -2def turn_right(self, evt):self.x = 2

在Paddle的初始化函数里面绑定两个键盘事件:

•就是按键盘左键就是响应self.turn_left

•就是按键盘右键就是响应self.turn_right

•evt是向系统注册的事件

8.增加球和木板的碰撞

现在球也有了,木板也有了,而且可以左右挪动,现在最精彩的部分要上演了,就是增加球碰到木板之后反弹,那么如何判断球碰到木板

了,简单我们只要在球的类里面增加一个函数来判断是否碰撞了

def draw(self):--snip--if self.hit_paddle(pos) == True:self.y = -3--snip--

9.判断当球运动到底部游戏结束

经过上面8步,游戏大体功能已经有了,那么如何判断游戏结束呢,我们设定只要球运动底部的时候(可以认为是球碰到了地面),游戏就失败

了,加几行代码就搞定了.

class Ball():def __init__(self,canvas,paddle,color):--snip--self.hit_bottom=Falsedef draw(self):--snip--if pos[3]>=self.canvas_height:#判断当球的下沿大于等于主界面的高度self.hit_bottom=True--snip--
paddle=Paddle(canvas,"blue")ball=Ball(canvas,paddle,"red")while 1:if ball.hit_bottom==False and ball.paddle.started :ball.draw()paddle.draw()tk.update_idletasks()tk.update()time.sleep(0.01)

源码大概100行实现了简单的功能,其实这个游戏还可以增加很多功能,比如记录分数,增加游戏开始和结束的提示,增加木板和球的种类,

增加管卡和难度等等大家可以自己发挥一下, 写完很有成就感~~

【Python】弹球小游戏相关推荐

  1. python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏

    本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinte ...

  2. python弹球小游戏程序_Python实现弹球小游戏

    本文主要给大家分享一个实战项目,通过python代码写一款我们儿时大多数人玩过的游戏---小弹球游戏.只不过当时,我们是在游戏机上玩,现在我们通过运行代码来玩,看看大家是否有不一样的体验,是否可以重温 ...

  3. python弹球小游戏程序设计_Python写的弹球小游戏

    原标题:Python写的弹球小游戏 Python 的功能强大应用广泛,从爬虫到 Web 开发,从科学计算到人工智能,都能见到它的身影.当然,Python 还可以编写游戏代码,虽然不是主流,但却十分有趣 ...

  4. Python弹球小游戏

    ========给在校的小妹妹做个游戏玩:. 弹珠游戏主要是靠坐标xy,接板长度,球的半径等决定: # -*- coding: utf-8 -*- # @Author : Codeooo # @Tim ...

  5. python小游戏编程实例-Python实现的弹球小游戏示例

    本文实例讲述了Python实现的弹球小游戏.分享给大家供大家参考,具体如下: 弹球 1. Ball 类 draw负责移动Ball 碰撞检测,反弹,Ball检测Paddle 2.Paddle类 draw ...

  6. python两人一碰_python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygam ...

  7. python画圆形螺旋线_Python写的弹球小游戏

    Python 的功能强大应用广泛,从爬虫到 Web 开发,从科学计算到人工智能,都能见到它的身影.当然,Python 还可以编写游戏代码,虽然不是主流,但却十分有趣,既能提升代码能力,又能自娱自乐.敲 ...

  8. PYTHON pygame库实战——实现双人弹球小游戏

    PYTHON pygame实战--运用pygame库实现双人弹球小游戏 使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截 ...

  9. python实现弹球小游戏

    跟着趣味开发python一起实现的弹球小游戏 游戏运行效果 实现流程 1.创建游戏画布(创建ball类) 2.增加几个动作(让小球移动.让小球来回反弹,改变小球的起始方向) 3.加上球拍,使球拍左右移 ...

  10. [python] 写个既有趣又可爱的弹球小游戏

    用python写一个既有趣有可爱的弹球小游戏 这几天闲着无聊,就在家写着游戏玩一玩,发现一个这样有趣的小游戏,我通过pygame把它先做了出来,话不多少先上代码. 首先先导入包,导包是必不可少的一件事 ...

最新文章

  1. 人工智能应用实战系列-如何在新闻推荐中使用迁移学习
  2. 抽象方法,抽象类,接口
  3. 微软Tech·Ed与中国IT行业一同成长
  4. 80后开网店卖故事:1500多位为感觉而埋单
  5. 魔方机器人之上位机编程-------- 最无厘头错误(空格)
  6. C#利用扩展方法,不引入新的类型,实现矩阵的操作
  7. 【Python】:SIFT算法的实现
  8. 「一本通 4.5 例 1」树的统计(树链剖分)
  9. web前端期末大作业:婚纱网页主题网站设计——唯一旅拍婚纱公司网站HTML+CSS+JavaScript
  10. 今天要学习的技术点,Python 筛选数字,模块导入,特殊变量__all__ 实战博客
  11. 在移动端打开 Google 的网页快照
  12. MDK编译全过程及数据存储
  13. vs2015微软服务器加载符号,Visual studio 正在从以下位置加载符号:Microsoft符号服务器 尝试取消禁用后续符号加载...
  14. JavaJSP调用JavaScript方法
  15. python爬取安居客二手房网站数据
  16. 2022年钴酸锂、三元材料行业重点企业市场竞争规模份额占比分析及投资发展战略咨询预测
  17. wald检验matlab,Wald检验和Wald-F检验一样么?高手帮帮忙
  18. 连接WiFi需要短信验证怎么做?
  19. 文件属性----解除锁定(Windows)
  20. Python django 个人博客系统源码

热门文章

  1. Kernel.shmall和kernel.shmmax
  2. C++中的for循环语句
  3. Zbrush鳞片生物建模制作教程
  4. C语言浮点数的发送和接收
  5. 技术分享 | mysqlbinlog 技巧
  6. 【深度解析】Java中的乐观锁、悲观锁
  7. <DataWhale>- 语义分割 - RLE编码
  8. imgaug数据增强实例
  9. imgaug数据增强神器:第零章 安装
  10. 支付宝转账(实现用户提现功能)