對於python,作為乙個新手,我嘗試著用一本指南來編寫我自己的遊戲。不過,在這個遊戲中,我試著檢測什麼時候乙個鍵一直被按住而不是僅僅按下。我使用的當前**不會使字元移動,而且如果沒有實現halt(self, evt)**,會導致飛船在按住按鈕足夠長時間後無法控制地加速。在from tkinter import *
import random
import time
class game:
def __init__(self):
self.tk = tk()
self.tk.title("shooter")
self.tk.resizable(0, 0)
self.tk.wm_attributes("-topmost", 1)
self.canvas = canvas(self.tk, width=500, height=1000, highlightthickness=0)
self.canvas.pack()
self.tk.update()
self.canvas_height = 1000
self.canvas_width = 500
self.bg = photoimage(file="background.gif")
w = self.bg.width()
h = self.bg.height()
for x in range(0, 5):
for y in range(0, 10):
self.canvas.create_image(x * w, y * h, \
image=self.bg, anchor='nw')
self.sprites =
self.running = true
def mainloop(self):
while 1:
if self.running == true:
for sprite in self.sprites:
sprite.move()
self.tk.update_idletasks()
self.tk.update()
time.sleep(0.01)
class coords:
def __init__(self, x1=0, y1=0, x2=0, y2=0):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
class sprite:
def __init__(self, game):
self.game = game
self.endgame = false
self.coordinates = none
def move(self):
pass
def coords(self):
return self.coordinates
class playersprite(sprite):
def __init__(self, game):
sprite.__init__(self, game)
self.renderimage = [
photoimage(file="player_1.gif"),
photoimage(file="player_2.gif"),
photoimage(file="player_3.gif"),
photoimage(file="player_4.gif"),
self.image = game.canvas.create_image(225, 900, \
image=self.renderimage[0], anchor='nw')
self.x = 0
self.y = 0
self.velx = 0
self.current_image = 0
self.current_image_add = 1
self.shoot_timer = 0
self.last_time = time.time()
self.coordinates = coords()
x_move = none
y_move = none
game.canvas.bind_all('', self.move_left)
game.canvas.bind_all('', self.move_right)
game.canvas.bind_all('', self.move_up)
game.canvas.bind_all('', self.move_down)
game.canvas.bind_all('', self.halt)
game.canvas.bind_all('', self.halt)
game.canvas.bind_all('', self.halt)
game.canvas.bind_all('', self.halt)
game.canvas.bind_all('', self.shoot)
def move_left(self, evt):
x_move = self.x - 1.5
self.x = x_move
def move_right(self, evt):
x_move = self.x + 1.5
self.x = x_move
def move_up(self, evt):
y_move = self.y - 1.5
self.y = y_move
def move_down(self, evt):
y_move = self.y + 1.5
self.y = y_move
def halt(self, evt):
time.sleep(0.01)
if x_move < 0:
x_move = -1.5
elif x_move > 0:
x_move = 1.5
elif y_move < 0:
y_move = -1.5
elif y_move > 0:
y_move = 1.5
def shoot(self, evt):
print("placeholder")
def move(self):
self.game.canvas.move(self.image, self.x, self.y)
def coords(self):
xy = self.game.canvas.coords(self.image)
self.coordinates.x1 = xy[0]
self.coordinates.y1 = xy[1]
self.coordinates.x2 = xy[0] + 24
self.coordinates.y2 = xy[1] + 32
return self.coordinates
g = game()
sp = playersprite(g)
g.mainloop()
我的目標是讓我的角色在按下相應的鍵時以恆定的速度移動(而不是過一段時間後無法控制的快速移動)。在
Linux下C語言檢測多個按鍵按下狀態的方法
在需要同時監聽多個按鍵按下狀態的情況下,可以通過監聽 dev input event事件的方法來判斷按鍵的狀態。比如對於通過鍵盤控制小車時,有可能多個方向鍵同時按下,需要同時監測到,通過前面文章的方法可以有效監控單個按鍵的訊息,但是不能同時監控多個按鍵同時按下的資訊。需要通過記錄鍵盤的按下和釋放事件...
stm32 工業按鍵檢測 STM32按鍵的檢測
stm32的按鍵檢測相對比較簡單,首先按部就班的初始化連線的到的i o,然後寫乙個按鍵掃瞄函式,這個和51微控制器的差不多。以下是乙個比較典型的例子 利用按鍵控制led key.件 ifndef key h define key h include sys.h definekey0 gpio rea...
學習總結 按下按鍵燈亮,再次按下按鍵,燈滅
1 主要實現按鍵控制燈的亮滅,按鍵按下,燈亮,再次按下,燈滅,主要對實現的邏輯進行控制,邏輯清晰,很簡單,實現的方法有兩種,方法1 將按鍵按下的值賦值給乙個變數,變數除以2的值的是基數或者偶數來確定燈亮還是燈滅,程式中設定的是變數的值除以2為0時,燈亮 變數的值除以2為1時,燈滅 程式如下 int ...