【发布时间】:2021-10-06 12:35:07
【问题描述】:
我正在尝试制作一个程序,让你扮演一个红色方块,一个蓝色方块跟随你。很简单,对吧?是的,但这是我第一次这样做。
我听说过 A*,但我想尝试一种更简单的方法,尤其是在示例中,蓝色方块计算绕过它们的方式没有任何障碍。它确实有效,但是,蓝色方块无法返回。我不知道为什么。蓝色方块的移动放置在一个函数中,该函数放置在另一个函数中,该函数放置在主游戏循环中。
import pygame,sys
import random
#window
width=1600
height=800
window=pygame.display.set_mode((width,height))
pygame.display.set_caption("simulation")
black=(0,0,0)
#red circle
redCircleCoords=(60, 60)
redCircleSize=(60, 60)
redCircle = pygame.Rect(redCircleCoords[0], redCircleCoords[1], redCircleSize[0], redCircleSize[1])
red=(255,0,0)
velRed=1
#blue circle
blueCircleCoords=(width-120, height-120)
blueCircleSize=(60,60)
blueCircle=pygame.Rect(blueCircleCoords[0], blueCircleCoords[1], blueCircleSize[0], blueCircleSize[1])
blue=(0,0,255)
velBlue=0.5
def redCircleMovement():
pressed=pygame.key.get_pressed()
if pressed[pygame.K_a] and redCircle.x > 0: #left
redCircle.x-=velRed
if pressed[pygame.K_d] and redCircle.x < width - 60: #right
redCircle.x+=velRed
if pressed[pygame.K_s] and redCircle.y < height - 60: #down
redCircle.y+=velRed
if pressed[pygame.K_w] and redCircle.y > 0: #up
redCircle.y-= velRed
def blueCircleMovement():
if redCircle.x > blueCircle.x:
blueCircle.x+=velBlue
if redCircle.x < blueCircle.x:
blueCircle.x-=velBlue
if redCircle.y > blueCircle.y:
blueCircle.y+=velBlue
if redCircle.y < blueCircle.y:
blueCircle.y-=velBlue
def draw():
redCircleVector=(redCircle.x, redCircle.y)
blueCircleVector=(blueCircle.x, blueCircle.y)
print('red:',redCircleVector)
print('blue:',blueCircleVector)
window.fill(black) #fill the screen with black
pygame.draw.rect(window, red, redCircle) #draw redCircle
pygame.draw.rect(window,blue,blueCircle) #draw blueCircle
pygame.display.flip() #update the display
def callFunctions():
draw()
redCircleMovement()
blueCircleMovement()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
callFunctions()
【问题讨论】:
标签: python pygame path-finding