只需要9步100行Python代码就可以实现一个简单又好玩的弹球游戏

今天给大家分享一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python写小游戏还是蛮方便的,蛮有意思的~~

需要本文源码:私信回复【源码】即可获取啦

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

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

1.创建游戏的主界面

我们用Python的内置模块Tkinter来完成了,它是Python的标准GUI工具包,可以非常方便在制作GUI小工具,因为是跨平台的,可以方便的在win和linux下运行,我们用Tk里的canvas绘图功能来制作一个小游戏.先来把主界面画出来

1).创建一个tk的实例

2).然后给这个窗口取一个名字叫game

3).通知窗口管理器调整布局大小,0,0表示不能被拉升

4).创建一个长为400*500的界面,背景色为默认,边框为厚度为0

5).通知窗口管理器注册组件

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__()函数里面,我们改一下

变成:

6.增加小木板

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

7.让木板可以移动

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

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

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

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

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

evt是向系统注册的事件

8.增加球和木板的碰撞

现在球也有了,木板也有了,而且可以左右挪动,现在最精彩的部分要上演了,就是增加球碰到木板之后反弹,那么如何判断球碰到木板了,简单我们只要在球的类里面增加一个函数来判断是否碰撞了

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

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

源码大概100行实现了简单的功能,其实这个游戏还可以增加很多功能,比如记录分数,增加游戏开始和结束的提示,增加木板和球的种类,增加管卡和难度等等大家可以自己发挥一下, 写完很有成就感~~

欢迎留言评论!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • 先看一下我们的最终效果图 我们分9步来讲解如何写这个小游戏 1.创建游戏的主界面 我们用Python的内置模块Tk...
    Lauzanhing阅读 887评论 1 2
  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 5,128评论 3 23
  • 《明月醉人,邂逅最美的元宵诗词》 春风十里,吹拂明月,这一轮圆月竟也染上了醉人的春意。 元宵佳节,多少文人墨客,借...
    周子茵阅读 301评论 0 0
  • 感恩公司对我的认可,让我学到很多知识。 感恩鲜花客服时刻帮我留意物流信息,生怕延误。 感恩阿奇每天都这么可爱,真的...
    爱眉小札夏大宝阅读 161评论 2 3
  • 背着沉重的行囊 向着银河的星光 向着沙漠的荒凉 向着大海的波澜 向着雪山的冰寒 背着沉重的行囊 我在世界流浪 任何...
    _卿酒酒_阅读 185评论 0 1