用 Python 的 Tkinter 创建一个 2D 我的世界游戏
以下是用 Python 的 tkinter 库编写的高级版 2D 我的世界游戏的示例代码:
import tkinter as tk
class MyWorldGame:
def __init__(self, master):
self.master = master
self.canvas = tk.Canvas(self.master, width=600, height=400, bg='SkyBlue')
self.canvas.pack()
self.blocks = ['Grass', 'Dirt', 'Stone', 'Bedrock', 'Oak']
self.current_block = 0 # 默认使用草方块
self.player_x = 300 # 玩家初始位置
self.player_y = 200
self.canvas.bind('<Button-1>', self.place_block)
self.canvas.bind('<Button-3>', self.remove_block)
self.canvas.bind('<KeyPress>', self.move_player)
self.draw_ball()
def draw_ball(self):
self.canvas.delete('ball')
self.canvas.create_oval(self.player_x-10, self.player_y-10, self.player_x+10, self.player_y+10, fill='red', tags='ball')
def place_block(self, event):
x = event.x // 40 * 40
y = event.y // 40 * 40
self.canvas.create_rectangle(x, y, x+40, y+40, fill=self.blocks[self.current_block])
def remove_block(self, event):
x = event.x // 40 * 40
y = event.y // 40 * 40
self.canvas.create_rectangle(x, y, x+40, y+40, fill='SkyBlue')
def move_player(self, event):
if event.keysym == 'Up':
self.player_y -= 10
elif event.keysym == 'Down':
self.player_y += 10
elif event.keysym == 'Left':
self.player_x -= 10
elif event.keysym == 'Right':
self.player_x += 10
elif event.char in '12345':
self.current_block = int(event.char) - 1
self.draw_ball()
root = tk.Tk()
game = MyWorldGame(root)
root.mainloop()
这段代码创建了一个窗口,并在窗口中绘制了一个大小为 600x400 的画布作为游戏界面。方块的尺寸为 40x40,玩家球的尺寸为 20x20,通过鼠标左键和右键可以在画布上放置和删除方块。玩家可以使用方向键控制球的移动,使用数字键 1-5 切换要放置的方块。游戏开始时背景被设定成天蓝色 ('SkyBlue')。
原文地址: https://www.cveoy.top/t/topic/pQJ7 著作权归作者所有。请勿转载和采集!