为什么我不能在Pygame中放置多个矩形?关闭
我正在尝试制作一个2D游戏,玩家可以在树上走来走去。但是由于某种原因,当程序试图放置树时,它没有出现。我尝试了所有的操作,例如将代码移至不同的部分,甚至将矩形的特定区域设置为300 300,但不会显示。如果您对如何修复它甚至有一些建议有任何想法,那将是很棒的。树的代码在第26行中。
谢谢!
代码:
import pygame
import random
player=(255,0,0)
grass = (0,150,0)
tree = (0,100,0)
dis_height = 600
dis_width = 600
pygame.init()
dis=pygame.display.set_mode((600,600))
x1 = 300
y1 = 300
x1_change = 0
y1_change = 0
tree_placex = random.randint(1, 600)
tree_placey = random.randint(1, 600)
pygame.display.set_caption('testing stuff')
game_over=False
while not game_over:
for event in pygame.event.get():
for i in range(10):
pygame.draw.rect(dis,player,[tree_placex,tree_placey,20,20])
#/////////////////PLAYER MOVEMENT////////////////////
if event.type==pygame.QUIT:
game_over=True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
y1_change = -0.5
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = 0.5
x1_change = 0
elif event.key == pygame.K_LEFT:
y1_change = 0
x1_change = -0.5
elif event.key == pygame.K_RIGHT:
y1_change = 0
x1_change = 0.5
elif event.type == pygame.KEYUP:
if event.key == pygame.K_UP:
y1_change = 0
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = 0
x1_change = 0
elif event.key == pygame.K_LEFT:
y1_change = 0
x1_change = 0
elif event.key == pygame.K_RIGHT:
y1_change = 0
x1_change = 0
if y1 < 0:
pygame.draw.rect(dis,player,[x1,0,15,15])
y1 = 600
pygame.display.update()
dis.fill(grass)
elif x1 < 0:
pygame.draw.rect(dis,player,[0,x1,15,15])
x1 = 600
pygame.display.update()
dis.fill(grass)
elif y1 >= dis_height:
pygame.draw.rect(dis,player,[x1,600,15,15])
y1 = 0
pygame.display.update()
dis.fill(grass)
elif x1 >= dis_width:
pygame.draw.rect(dis,player,[600,y1,15,15])
x1 = 0
pygame.display.update()
dis.fill(grass)
x1 += x1_change
y1 += y1_change
dis.fill(grass)
pygame.draw.rect(dis,player,[x1,y1,15,15])
pygame.display.update()
pygame.quit()
quit()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您正在渲染其他一切的草地。 其他任何内容绘制之前precablelly
请在
尝试仅调用
dis.fill(grass)
一次,然后在处理这些事件之后,You are rendering the grass ontop of everything else. Try only calling
dis.fill(grass)
once, before anything else has drawnMaybe here
Preferabllly after you have handled the events
典型的pygame应用程序循环必须:
pygame.time.clock.tick
pygame.event.pump()
或pygame.event.get()
。BLIT
所有对象)您必须在绘制矩形之前清除应用程序循环中的显示:
The typical PyGame application loop has to:
pygame.time.Clock.tick
pygame.event.pump()
orpygame.event.get()
.blit
all the objects)pygame.display.update()
orpygame.display.flip()
You must clear the display in the application loop before drawing the rectangles: