这是我的第一个问题,但我有点迷路了,所以我想知道是否有人能告诉我为什么它会崩溃。我对python相当陌生(尽管我用其他语言编写了很多其他代码)。所以我的pygame基本上是一个猫捉老鼠的游戏,白色是猫,黑色是老鼠。。。你明白了。唯一的问题是,当我打开它时,我看到blit文本大约一秒钟,然后它崩溃了。我尝试了很多次查看代码,但都没有结果,所以如果有人能帮我查看一下,我将不胜感激(我可能错过了一些愚蠢的事情,比如不正确的缩进)
import pygame
import random
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
Green= (0,225,0)
pygame.init()
windowSurface=pygame.display.set_mode((1000,1000))
pygame.display.set_caption("1st PyGame")
clock = pygame.time.Clock();
counter, text = 60, '60'.rjust(3)
pygame.time.set_timer(pygame.USEREVENT, 1000)
font = pygame.font.SysFont('Consolas', 30)
exit = False
xcord=250
ycord=250
xchange=0
ychange=0
xCord=750
yCord=750
xChange=0
yChange=0
while not exit:
windowSurface.fill((255,0,0))
text='Cat And Mouse !!!White=Cat(arrow-keys) Black=Mouse(wasd)!!! White Wins By Catching Black But If Black Lasts A Minute Then Black Wins!!!'
windowSurface.blit(font.render(text, True, (0, 255, 0)), (500, 500))
pygame.display.flip()
time.sleep(15)
text='Get Ready Game Starts In 15 Seconds'
windowSurface.blit(font.render(text, True, (0, 255, 0)), (500, 500))
clock.tick(60)
time.sleep(15)
start_ticks=pygame.time.get_ticks()
seconds=(pygame.time.get_ticks()-start_ticks)/1000
for event in pygame.event.get():
if event.type==pygame.QUIT:
exit=True
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_LEFT:
xChange-=10
yChange+=0
elif event.type==pygame.KEYUP:
if event.key==pygame.K_LEFT:
xChange=0
yChange=0
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_RIGHT:
xChange+=10
yChange+=0
elif event.type==pygame.KEYUP:
if event.key==pygame.K_RIGHT:
xChange=0
yChange=0
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_UP:
xChange+=0
yChange-=10
elif event.type==pygame.KEYUP:
if event.key==pygame.K_UP:
xChange=0
yChange=0
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_DOWN:
xChange+=0
yChange+=10
elif event.type==pygame.KEYUP:
if event.key==pygame.K_DOWN:
xChange=0
yChange=0
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_a:
xchange-=10
ychange+=0
elif event.type==pygame.KEYUP:
if event.key==pygame.K_a:
xchange=0
ychange=0
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_d:
xchange+=10
ychange+=0
elif event.type==pygame.KEYUP:
if event.key==pygame.K_d:
xchange=0
ychange=0
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_w:
xchange+=0
ychange-=10
elif event.type==pygame.KEYUP:
if event.key==pygame.K_w:
xchange=0
ychange=0
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_s:
xchange+=0
ychange+=10
elif event.type==pygame.KEYUP:
if event.key==pygame.K_s:
xchange=0
ychange=0
crashxCord1=xCord+10
crashxCord2=xCord-10
crashyCord1=yCord+10
crashyCord2=yCord-10
for e in pygame.event.get():
if e.type==pygame.USEREVENT:
counter-=1
text=str(counter).rjust(3) if counter > 0 else 'Black Wins'
if e.type==pygame.QUIT: break
else:
if text=='Black Wins':
windowSurface.fill(0,0,0)
screen.blit(font.render(text, True, (0, 255, 0)), (500, 100))
pygame.display.flip()
clock.tick(60)
time.sleep(10)
exit=True
else:
screen.blit(font.render(text, True, (0, 255, 0)), (500, 100))
pygame.display.flip()
clock.tick(60)
if crashxCord1<=xcord and crashxCord2>=xcord and crashyCord1<=ycord and crashyCord2>=ycord:
text='White Wins'
windowSurface.fill(255,255,255)
screen.blit(font.render(text, True, (0, 255, 0)), (500, 100))
pygame.display.flip()
clock.tick(60)
time.sleep(10)
exit=True
pygame.display.update()
xcord+=xchange
ycord+=ychange
xCord+=xChange
yCord+=yChange
windowSurface.fill(red)
pygame.draw.rect(windowSurface, black, ([xcord,ycord,20,20]))
pygame.draw.rect(windowSurface, white, ([xCord,yCord,20,20]))
clock.tick(60)
pygame.display.update()
你犯了一个很小但致命的错误。你忘记导入时间模块了
将这一行直接放在
import pygame
之后,这将解决您的第一个问题下一个问题是,在每帧中都会导致time.sleep。当你打开一个pygame窗口时,你永远不会想要时间。睡眠呼叫。如果此时用户与窗口进行任何交互,程序将变得无响应,并崩溃。我创建了一个小函数,并用延迟替换它,这样用户可以在暂停时与屏幕交互
这是许多小事情之一,将导致一个新的pygame开发人员撕掉你所有的头发
我建议大家阅读一下这本书: http://www.apress.com/gp/book/9781590598726
它解释了所有Pygame惯例和标准。这是我用来开始Pygame开发的书
你的碰撞检测很难被击中。这只猫必须正好在老鼠的顶端才能获胜。如果这是您想要的,这是您的工作代码。如果你只想触摸,说这个词,我会告诉你怎么做
代码如下:
第一次尝试很好! 希望这有帮助,祝Pygame好运
[编辑]
为了让用户在两个矩形接触时获胜,我对鼠标的每个角落都使用了collidepoint函数。此函数用于检测指定点是否位于矩形对象内
移动每个矩形后,此部分即开始:
如果你需要额外的帮助,请不要犹豫
相关问题 更多 >
编程相关推荐