【四二學堂】python四子連珠遊戲-5(交替變換顏色,記錄位置)

課程視頻:
https://edu.csdn.net/course/detail/28882

代碼:

from tkinter import*
import time

#畫布
#棋盤
#鼠標左鍵綁定事件
#落下棋子後位置記錄下來。保證每個棋子能夠落在準確的位置上。
#交替變換顏色,記錄位置

class Game:
    def __init__(self):
        #self.ball=ball
        self.clsposition = Clsposition()
        self.tk = Tk()
        self.tk.title("四二學堂Python四子連珠遊戲")
        self.tk.resizable(0, 0)  # 窗口在水平、垂直方向的大小都不能改變
        # tk.wm_attributes("-topmost",1)  #畫布窗口放在其他所有窗口之前
        self.canvas = Canvas(self.tk, width=700, height=700)
        # anvas = Canvas(tk,width=700,height=700,bd=0,highlightthickness=0)
        # bd=0 highlightthickness=0 確保在畫布之外沒有邊框,看上去更美觀些
        self.canvas.pack()

    def action(self,event):
        for i in range(0, 5):
            if (event.x >= 100 + i * 100 and event.x < 100 + i * 100 + 100):

                for x in range(4, -1, -1):
                    #print(self.clsposition.positions[i][x])
                    if (self.clsposition.positions[i][x] == 0):

                        id1 = self.canvas.create_oval(100 + i * 100, 40, 100 + i * 100 + 100, 140, fill=self.clsposition.colorx)
                        self.ball = Ball()

                        #self.clsposition.positions[i][x] = 1
                        #downy = x
                        #downx = i
                        self.ball.down(id1, self.canvas, self.tk,i,x)

                        if (self.clsposition.colorx == 'blue'):
                            self.clsposition.colorx='red'
                            self.clsposition.positions[i][x] = 1
                        else:
                            self.clsposition.colorx = 'blue'
                            self.clsposition.positions[i][x] = 2
                        break

                #self.ball.down(id1, self.canvas, self.tk)

class Ball:
    def __init__(self):
        self.y=0
        self.y0=10

    def down(self,id1,canvas,tk,i,x):

        self.canvas=canvas
        self.tk=tk
        for i in range(0, 200):
            self.canvas.move(id1, 0, 10)  # 10像素縱向下降
            self.y=self.y+10

            if(self.y>x*100+50):
                self.y0=0
                break

            self.tk.update()
            time.sleep(0.1)


class Dlines:
    def drawline(self, canvas):
        self.canvas = canvas

        a = [100, 200, 300, 400, 500, 600]
        for ii in a:
            self.canvas.create_line(100, ii, 600, ii)
            self.canvas.create_line(ii, 100, ii, 600)

class Clsposition:
    def __init__(self):
        self.positions = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
        self.colorx = "blue"

'''
class ball:
    def down(self):
'''

if __name__=="__main__":

    ball=Ball()
    game=Game()
    game.canvas.bind('<Button-1>', game.action)
    dlines = Dlines()
    dlines.drawline(game.canvas)

    game.tk.mainloop()




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章