只需要9步100行Python代碼就可以實現(xiàn)一個簡單又好玩的彈球游戲

今天給大家分享一個有趣又好玩的彈球的游戲,一來可以把類的知識融會一下,二來加深對Python的興趣.你會發(fā)現(xiàn)哎呀Python寫小游戲還是蠻方便的,蠻有意思的~~

需要本文源碼:私信回復【源碼】即可獲取啦

先看一下我們的最終效果圖:

我們分9步來講解如何寫這個小游戲

1.創(chuàng)建游戲的主界面

我們用Python的內置模塊Tkinter來完成了,它是Python的標準GUI工具包,可以非常方便在制作GUI小工具,因為是跨平臺的,可以方便的在win和linux下運行,我們用Tk里的canvas繪圖功能來制作一個小游戲.先來把主界面畫出來

1).創(chuàng)建一個tk的實例

2).然后給這個窗口取一個名字叫game

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

4).創(chuàng)建一個長為400*500的界面,背景色為默認,邊框為厚度為0

5).通知窗口管理器注冊組件

6).刷新一下界面

2.創(chuàng)建一個Ball球的類

好主界面有了,我們就開始創(chuàng)建球

1)首先我們創(chuàng)建一個Ball的類,這個類的初始化參數(shù)有兩個:

一個canvas也就是畫圖用來畫一個球,一個是color,表示球的顏色

2)在類的初始化的函數(shù)里面

初始化canvas,

畫一個實心的球并記錄下它的id

創(chuàng)建球的默認在主界面上的位置,我們把它放屏幕中間

然后讓球出現(xiàn)在主界面上:

3.我們讓球向上動起來

剛才在Ball類里面有一個draw函數(shù),我們現(xiàn)在在draw里面加點東西,讓球向上運動

4.讓球能回彈

1).第三步我們球能向上運動,現(xiàn)在我們要讓它能碰到墻壁反彈

我們剛才是把self.canvas.move(self.id,0,-1)寫死0,-1,表示x坐標不動,y坐標不斷的-1也就是球在向上運動

現(xiàn)在我們把這兩個值設成兩個變量self.x,self.y,當我們的球運動到上邊界的時候,就把self.y加1,也就向下運行,

當運動到下邊界的時候,就把self.y減1,表示向上運行

2).那么如何判斷球已經碰壁了,很簡單,我們動態(tài)的去球的坐標[x1,y1,x2,y2],

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

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

獲取了球的坐標之后(它是一個list),判斷一下pos[1]和pos[3]就可以了

5.增加球的運行方向

現(xiàn)在我們的球的運動方向是固定的,我們希望每次球的運動方向要隨機,不然太low了,怎么做呢,很簡單增加一個隨機函數(shù)就可以了

在__init__()函數(shù)里面,我們改一下

變成:

6.增加小木板

現(xiàn)在我們的球已經可以在界面上到處亂竄了,我們現(xiàn)在增加一個木板來打彈球

7.讓木板可以移動

我們通過綁定一些鍵盤事件,讓木板可以移動

增加2個函數(shù),左移和右移,有同學會問evt是啥,不急下面會說.

在Paddle的初始化函數(shù)里面綁定兩個鍵盤事件:

就是按鍵盤左鍵就是響應self.turn_left

就是按鍵盤右鍵就是響應self.turn_right

evt是向系統(tǒng)注冊的事件

8.增加球和木板的碰撞

現(xiàn)在球也有了,木板也有了,而且可以左右挪動,現(xiàn)在最精彩的部分要上演了,就是增加球碰到木板之后反彈,那么如何判斷球碰到木板了,簡單我們只要在球的類里面增加一個函數(shù)來判斷是否碰撞了

9.判斷當球運動到底部游戲結束

經過上面8步,游戲大體功能已經有了,那么如何判斷游戲結束呢,我們設定只要球運動底部的時候(可以認為是球碰到了地面),游戲就失敗了,加幾行代碼就搞定了.

源碼大概100行實現(xiàn)了簡單的功能,其實這個游戲還可以增加很多功能,比如記錄分數(shù),增加游戲開始和結束的提示,增加木板和球的種類,增加管卡和難度等等大家可以自己發(fā)揮一下, 寫完很有成就感~~

歡迎留言評論!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 先看一下我們的最終效果圖 我們分9步來講解如何寫這個小游戲 1.創(chuàng)建游戲的主界面 我們用Python的內置模塊Tk...
    Lauzanhing閱讀 909評論 1 2
  • 1 CALayer IOS SDK詳解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi閱讀 5,209評論 3 23
  • 《明月醉人,邂逅最美的元宵詩詞》 春風十里,吹拂明月,這一輪圓月竟也染上了醉人的春意。 元宵佳節(jié),多少文人墨客,借...
    周子茵閱讀 318評論 0 0
  • 感恩公司對我的認可,讓我學到很多知識。 感恩鮮花客服時刻幫我留意物流信息,生怕延誤。 感恩阿奇每天都這么可愛,真的...
    愛眉小札夏大寶閱讀 177評論 2 3
  • 背著沉重的行囊 向著銀河的星光 向著沙漠的荒涼 向著大海的波瀾 向著雪山的冰寒 背著沉重的行囊 我在世界流浪 任何...
    _卿酒酒_閱讀 199評論 0 1