用PYTHON Tkinter 做四子棋游戏(2)

朋友们,读者们,铁粉们!!!

这次,继续进行用PYTHON 来开发一个四子棋游戏。

上次,见文章用《PYTHON Tkinter 做四子棋游戏(1)》,我们已经成功的做出了网页界面,现在,就要做出棋盘了。

那我们就直接开门见山,现在就揭露代码:

我们接下来要创作棋盘,在上一篇中有提到棋盘将会是10*10的

def create_board(self):
        for row in range(10):

        #创造十行
            for col in range(10):

                #创造十列
                button = tk.Button(self.root, text=" ", font=('normal', 20), width=3, height=1,#创造按钮
                                   command=lambda r=row, c=col: self.on_click(r, c),
                                   highlightthickness=0, bd=0, relief="flat",
                                   bg="#fff",   #没有被点击时白色
                                   activebackground="#ddd")  # 被点击时深灰色
                button.grid(row=row, column=col, padx=2, pady=2) #设定空隙
                self.buttons[row][col] = button#设定位置

还是那句话:如果想借鉴使用,麻烦先点个赞再复制。如果因此导致失败,本人概不负责。

复制后会发现,什么也不会出现,只有一个空网页,所以我们还需制作我们的棋盘。

但如何制作,就等下一次再分享了

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的五代码: ``` import tkinter as tk class Game: def __init__(self): self.board = [[0] * 15 for _ in range(15)] self.player = 1 self.game_over = False def get_winner(self, row, col): directions = [(0, 1), (1, 0), (1, 1), (-1, 1)] for d in directions: count = 1 for i in range(1, 5): r = row + d[0] * i c = col + d[1] * i if r < 0 or r >= 15 or c < 0 or c >= 15 or self.board[r][c] != self.player: break count += 1 for i in range(1, 5): r = row - d[0] * i c = col - d[1] * i if r < 0 or r >= 15 or c < 0 or c >= 15 or self.board[r][c] != self.player: break count += 1 if count >= 5: return self.player return 0 def play(self, row, col): if self.game_over: return if self.board[row][col] != 0: return self.board[row][col] = self.player winner = self.get_winner(row, col) if winner != 0: print("Player", self.player, "wins!") self.game_over = True else: self.player = 3 - self.player class Board: def __init__(self, game): self.game = game self.window = tk.Tk() self.window.title("Five in a Row") self.canvas = tk.Canvas(self.window, width=450, height=450) self.canvas.pack() self.canvas.bind("<Button-1>", self.click) for i in range(15): self.canvas.create_line(15 + i * 30, 15, 15 + i * 30, 435) self.canvas.create_line(15, 15 + i * 30, 435, 15 + i * 30) def start(self): self.window.mainloop() def draw_piece(self, row, col): x = col * 30 + 15 y = row * 30 + 15 if self.game.player == 1: self.canvas.create_oval(x - 13, y - 13, x + 13, y + 13, fill="black") else: self.canvas.create_oval(x - 13, y - 13, x + 13, y + 13, fill="white") def click(self, event): if self.game.game_over: return x = event.x y = event.y row = round((y - 15) / 30) col = round((x - 15) / 30) self.game.play(row, col) self.draw_piece(row, col) game = Game() board = Board(game) board.start() ``` 运行该代码,可以得到一个简单的五游戏界面。玩家可以点击盘上的空位,将自己的放在该位置。当有一方连成五时,游戏结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值