我正在为我在学校上的课设计一个简单的python游戏。我们必须为图形使用tkinter软件包,而我在浪费时间控制画布上的对象方面遇到了麻烦。我在网上阅读的所有内容越来越让我感到困惑。是否有可能做一个简单的总结,甚至是基本的代码示例?我想包含代码,但实际上目前没有任何可用。我要做的就是w =上a =左s =下d =右在屏幕(画布)上移动一个正方形。谢谢
答案 0 :(得分:0)
这里是一个示例,该示例是我前一段时间做的事情的精简版。远非完美,但它显示了基本原理。
from tkinter import *
class Ball:
def __init__(self,canvas,**kw):
self.canvas = canvas
self.radius = kw.get('radius',20)
self.pos_x = kw.get('pos_x',0)
self.pos_y = kw.get('pos_y',0)
self.color = kw.get('color','blue')
self.create()
def calculate_ball_pos(self):
x1 = self.pos_x
x2 = self.pos_x + self.radius
y1 = self.pos_y
y2 = self.pos_y + self.radius
return x1,y1,x2,y2
def create(self):
coords = self.calculate_ball_pos()
self.ball = self.canvas.create_oval(coords[0],coords[1],coords[2],coords[3])
self.canvas.itemconfig(self.ball, fill=self.color)
def move(self,x=0,y=0):
self.pos_x += x
self.pos_y += y
coords = self.calculate_ball_pos()
self.canvas.coords(self.ball,coords[0],coords[1],coords[2],coords[3])
def keypress(event):
"""Recieve a keypress and move the ball by a specified amount"""
print(event)
if event.char == 'w':
ball.move(0,-5)
elif event.char == 's':
ball.move(0,5)
elif event.char == 'a':
ball.move(-5,0)
elif event.char == 'd':
ball.move(5,0)
else:
pass
root = Tk()
mainCanvas = Canvas(root, width=200, height=200)
root.bind('w',keypress)
root.bind('s',keypress)
root.bind('a',keypress)
root.bind('d',keypress)
mainCanvas.grid()
ball = Ball(mainCanvas,pos_x=50,pos_y=50)
root.mainloop()
用w,s,a和d键分别使球向左,向右或向右移动。请注意,我只是移动对象(更改其坐标)而不是每次重画球
使用一个盒子代替它应该很简单。 create_rectangle
而不是create_oval