用 Python 的 Tkinter 创建 2D 我的世界游戏 - 5 种方块
以下是一个使用 Python 的 tkinter 库编写的高级版 2D 我的世界游戏的示例代码:\n\npython\nimport tkinter as tk\nimport random\n\n# 游戏设置\nWIDTH = 800\nHEIGHT = 600\nBLOCK_SIZE = 40\nBLOCK_COLORS = ["green", "brown", "gray", "black", "saddle brown"]\nBLOCK_TYPES = ["草方块", "泥土", "石头", "基岩", "橡木"]\n\n# 初始化地图\nworld_map = [[0 for _ in range(WIDTH // BLOCK_SIZE)] for _ in range(HEIGHT // BLOCK_SIZE)]\n\n# 初始化玩家位置和当前方块\nplayer_x = WIDTH // 2\nplayer_y = HEIGHT // 2\ncurrent_block = 0\n\n# 创建窗口\nwindow = tk.Tk()\nwindow.title("我的世界")\ncanvas = tk.Canvas(window, width=WIDTH, height=HEIGHT, bg="sky blue")\ncanvas.pack()\n\n# 绘制地图\ndef draw_map():\n canvas.delete("all")\n for y in range(HEIGHT // BLOCK_SIZE):\n for x in range(WIDTH // BLOCK_SIZE):\n block_color = BLOCK_COLORS[world_map[y][x]]\n canvas.create_rectangle(x * BLOCK_SIZE, y * BLOCK_SIZE, (x + 1) * BLOCK_SIZE, (y + 1) * BLOCK_SIZE, fill=block_color)\n\n# 移动小球\ndef move_player(event):\n global player_x, player_y\n if event.keysym == "Up":\n player_y -= BLOCK_SIZE\n elif event.keysym == "Down":\n player_y += BLOCK_SIZE\n elif event.keysym == "Left":\n player_x -= BLOCK_SIZE\n elif event.keysym == "Right":\n player_x += BLOCK_SIZE\n draw_map()\n canvas.create_oval(player_x, player_y, player_x + BLOCK_SIZE, player_y + BLOCK_SIZE, fill="red")\n\n# 添加方块\ndef add_block(event):\n global current_block\n x = event.x // BLOCK_SIZE\n y = event.y // BLOCK_SIZE\n world_map[y][x] = current_block\n draw_map()\n\n# 删除方块\ndef remove_block(event):\n x = event.x // BLOCK_SIZE\n y = event.y // BLOCK_SIZE\n world_map[y][x] = 0\n draw_map()\n\n# 切换方块\ndef switch_block(event):\n global current_block\n block_index = int(event.keysym) - 1\n if 0 <= block_index < len(BLOCK_TYPES):\n current_block = block_index\n\n# 生成随机地形\ndef generate_terrain():\n for y in range(HEIGHT // BLOCK_SIZE):\n for x in range(WIDTH // BLOCK_SIZE):\n world_map[y][x] = random.randint(0, len(BLOCK_TYPES) - 1)\n\n# 绑定事件\ncanvas.bind("<KeyPress-Up>", move_player)\ncanvas.bind("<KeyPress-Down>", move_player)\ncanvas.bind("<KeyPress-Left>", move_player)\ncanvas.bind("<KeyPress-Right>", move_player)\ncanvas.bind("<Button-1>", remove_block)\ncanvas.bind("<Button-3>", add_block)\ncanvas.bind("<KeyPress-1>", switch_block)\ncanvas.bind("<KeyPress-2>", switch_block)\ncanvas.bind("<KeyPress-3>", switch_block)\ncanvas.bind("<KeyPress-4>", switch_block)\ncanvas.bind("<KeyPress-5>", switch_block)\n\n# 生成地形并开始游戏\ngenerate_terrain()\ndraw_map()\ncanvas.create_oval(player_x, player_y, player_x + BLOCK_SIZE, player_y + BLOCK_SIZE, fill="red")\n\n# 运行游戏\nwindow.mainloop()\n\n\n在这个示例代码中,我们使用了 tkinter 库来创建窗口和绘制图形。游戏的地图使用二维数组来表示,每个元素代表一个方块的类型(0 表示没有方块)。玩家使用方向键移动小球,使用鼠标左键删除方块,使用鼠标右键添加方块。玩家可以使用数字键 1-5 来切换要放置的方块类型。在游戏开始时,背景被设定为天蓝色,地形会随机生成。
原文地址: https://www.cveoy.top/t/topic/pQLC 著作权归作者所有。请勿转载和采集!