bugku 只有黑棋的棋盘

解压压缩包后有两个文件(只有黑棋的棋盘.png、flag.zip)
题目提示为手动修复
用010editor打开查看
在这里插入图片描述发现zip文件头有问题还有这个文件为伪加密
将其修改为在这里插入图片描述然后修改后缀名,解压后为txt文件,内容为

…
…
CDEFGHIJKLMNOPQRSTU
BCDEFGHIJKLMNOPQRST
ABCDEFGHIJKLMNOPQRS

前面有三个省略号,在看了下提示后是要我们补全十行,然后跟格子上的棋子匹配

JKLMNOPQRSTUVWXYZAB
IJKLMNOPQRSTUVWXYZA
HIJKLMNOPQRSTUVWXYZ
GHIJKLMNOPQRSTUVWXY
FGHIJKLMNOPQRSTUVWX
EFGHIJKLMNOPQRSTUVW
DEFGHIJKLMNOPQRSTUV
CDEFGHIJKLMNOPQRSTU
BCDEFGHIJKLMNOPQRST
ABCDEFGHIJKLMNOPQRS

与原来的图片对应一下得GOODGOPLAY
解压加密文件后修改一下文件的高即可

在这里插入图片描述

你可以使用Python的GUI库(如Tkinter)创建一个窗口,然后在窗口中绘制棋盘。当鼠标左键被按下时,你可以在鼠标点击的位置绘制一个黑棋子;当鼠标右键被按下时,你可以在鼠标点击的位置绘制一个白棋子。以下是一个简单的示例代码: ```python import tkinter as tk # 棋盘大小 BOARD_SIZE = 19 # 棋子大小 STONE_SIZE = 20 class Board(tk.Canvas): def __init__(self, master=None, **kwargs): tk.Canvas.__init__(self, master, **kwargs) self.master = master self.stones = [[None] * BOARD_SIZE for i in range(BOARD_SIZE)] self.bind("<Button-1>", self.place_black_stone) self.bind("<Button-3>", self.place_white_stone) def draw_board(self): for i in range(BOARD_SIZE): x0, y0, x1, y1 = self.get_cross_point(i, 0), self.get_cross_point(i, BOARD_SIZE - 1) self.create_line(x0, y0, x1, y1) x0, y0, x1, y1 = self.get_cross_point(0, i), self.get_cross_point(BOARD_SIZE - 1, i) self.create_line(x0, y0, x1, y1) for i in [3, 9, 15]: for j in [3, 9, 15]: x, y = self.get_cross_point(i, j) self.create_oval(x - 2, y - 2, x + 2, y + 2, fill="black") def get_cross_point(self, i, j): x = (i + 1) * self.master.winfo_width() // (BOARD_SIZE + 1) y = (j + 1) * self.master.winfo_height() // (BOARD_SIZE + 1) return x, y def place_black_stone(self, event): i, j = self.get_clicked_cross_point(event) if self.stones[i][j] is None: x, y = self.get_cross_point(i, j) self.create_oval(x - STONE_SIZE, y - STONE_SIZE, x + STONE_SIZE, y + STONE_SIZE, fill="black") self.stones[i][j] = "black" def place_white_stone(self, event): i, j = self.get_clicked_cross_point(event) if self.stones[i][j] is None: x, y = self.get_cross_point(i, j) self.create_oval(x - STONE_SIZE, y - STONE_SIZE, x + STONE_SIZE, y + STONE_SIZE, fill="white") self.stones[i][j] = "white" def get_clicked_cross_point(self, event): x, y = event.x, event.y i = round(x / self.master.winfo_width() * (BOARD_SIZE - 1)) j = round(y / self.master.winfo_height() * (BOARD_SIZE - 1)) return i, j if __name__ == "__main__": root = tk.Tk() board = Board(root, width=400, height=400) board.draw_board() board.pack() root.mainloop() ``` 这个示例代码使用了Tkinter库创建了一个窗口,并在窗口中绘制了一个大小为19的棋盘。当鼠标左键被按下时,会在鼠标点击的位置绘制一个黑棋子;当鼠标右键被按下时,会在鼠标点击的位置绘制一个白棋子。你可以根据自己的需要修改代码来实现更复杂的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值