用python做個彈球遊戲(一)
阿新 • • 發佈:2019-01-28
用python tkinter模組做一個擊打反彈球和球拍的遊戲。球在螢幕上飛,玩家需要把它擊打回去,只要球落到螢幕底部,遊戲就結束。
首先我們做一個在螢幕上到處移動的小球:
一個會動的小球就做好啦 效果圖如下,只是它會動<( ̄3 ̄)> !#coding:utf-8 from tkinter import * import random import time class Ball: #建立一個球類 def __init__(self, canvas, color): self.canvas = canvas self.id = canvas.create_oval(10, 10, 25, 25, fill=color) #返回剛好劃小球的id,create_oval建立一個橢圓 self.canvas.move(self.id, 245, 100) #把橢圓移動到畫布 starts = [-3, -2, -1, 1, 2, 3] random.shuffle(starts) #隨機排列 self.x = starts[0] self.y = -3 self.canvas_height = self.canvas.winfo_height() #獲取畫布當前高度 self.canvas_width = self.canvas.winfo_width() #獲取畫布當前寬度 def draw(self): self.canvas.move(self.id, self.x, self.y) #讓小球水平和垂直移動 pos = self.canvas.coords(self.id) #coords返回畫布上畫好的x和y座標 #判斷小球是否撞到畫布頂部或者底部,保證小球反彈回去,不消失 if pos[1] <= 0: self.y = 3 if pos[3] >= self.canvas_height: self.y = -3 if pos[0] <= 0: self.x = 3 if pos[2] >= self.canvas_width: self.x = -3 tk = Tk() tk.title("Game") tk.resizable(0, 0) #視窗大小不可調整 tk.wm_attributes("-topmost", 1) #使畫布視窗置於所有視窗之前 canvas = Canvas(tk,width=500, height=400, bd=0, highlightthickness=0) #bd和highlighttthickness是為了保證畫布沒有邊框 canvas.pack() tk.update() #動畫初始化 ball = Ball(canvas, 'red') while 1: #畫布一出現會馬上消失,為了防止畫布消失,用tkinter一直重畫 ball.draw() tk.update_idletasks() tk.update() time.sleep(0.01)