Я пытаюсь сделать игру, похожую на flappy bird в python, и использую в качестве контроллера ультразвуковой датчик (все это связано с Raspberry Pi).если расстояние <10, птица движется вниз, элиф расстояние> 10 птица движется вверх.Я не слишком уверен в том, как я могу связать расстояние с движением птицы.
Я пробовал искать различные команды для игры, но пока мне не везло.
Вот код, который у меня есть.
import RPi.GPIO as GPIO
import time
import sys
import pygame
pygame.init()
GPIO.setmode(GPIO.BCM)
TRIG = 4
ECHO = 18
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
def get_distance():
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO) == False:
start = time.time()
while GPIO.input(ECHO) == True:
end = time.time()
sig_time = end-start
distance = sig_time / 0.000058
print ('Distance: {} cm'.format(distance))
return distance
# distance = get_distance() ### stuck here
# if distance < 10:
# bird1.
screenwidth = 600 #creating the world
screenheight = 400
speed = [4,4]
black = 0,0,0
skyblue = 0,231,252
screen = pygame.display.set_mode((600, 400))
bird1 = pygame.image.load("bird1.png")
bird2 = pygame.image.load("bird2.png")
pipe = pygame.image.load("pipe1.png")
gameover = pygame.image.load("game-over.png")
gameover = pygame.transform.scale(gameover,(width,height))
gameoverrect = gameover.get_rect()
bird1height = bird1.get_height()
bird1 = pygame.transform.scale(bird1,(int(bird1.get_height()*0.6),int(bird1.get_height()*0.6))) #making the bird smaller to fit the screen better
bird2 = pygame.transform.scale(bird2,(int(bird2.get_height()*0.6),int(bird2.get_height()*0.6)))
bird1rect = bird1.get_rect()
print ('bird1rect') #positioning
bird1rect.x = 20
piperect = pipe.get_rect()
pipestartx = 600
pipestarty = 0
piperect.x, piperect.y = pipestartx, pipestarty
for x in range(0,600):
screen.blit(bird1,(x,200))
class pipe(): #creating the pipe
def __init__(self,startx,position = "top",pipeHeight = 200):
self.sprite = pygame.image.load("pipe1.png")
self.sprite = pygame.transform.scale(self.sprite,(50,pipeHeight))
self.rect = self.sprite.get_rect()
self.rect.x = startx
if position == "top":
self.rect.y = 0
else:
self.sprite = pygame.transform.rotate(self.sprite,180)
self.rect.y = height - self.sprite.get_height()
pipelist = [] #this creates the pipes in the world
pipelist.append(pipe(200,"top",220))
pipelist.append(pipe(200,"bottom",90))
pipelist.append(pipe(600,"top",140))
pipelist.append(pipe(600,"bottom",190))
pipelist.append(pipe(800,"bottom",100))
pipelist.append(pipe(800,"top",220))
pipelist.append(pipe(1000,"top",100))
pipelist.append(pipe(1000,"bottom",220))
pipelist.append(pipe(1200,"top",280))
pipelist.append(pipe(1200,"bottom",50))
fontObj = pygame.font.Font("C:\Windows\Fonts\Arial.ttf",40) #creating a new font object
Я ожидаю, что смогу перемещать птицу, используя ультразвуковой датчик в качестве контроллера.Не стесняйтесь давать ссылки на онлайн-источники, которые могут мне помочь, я хотел бы узнать больше.