我有一个相当复杂的程序,可以让忍者在屏幕上奔跑。当你按下按钮时,他会滑倒,然后又回来。当你向上压的时候,他应该跳下来然后跑。但是忍者一直在跳,唯一能跳出来的方法就是你在地面上滑行。他只有在地上才能滑倒,这很好,但我不知道他为什么一直弹跳
我不知道如何解决这个问题,但我在代码中尝试了一些东西和开关,但没有任何帮助。下面的代码很复杂,必须包含图像。我不希望你得到图像并测试它,我只是希望专业人士检查一下,看看他们是否能看到我没有看到的东西
我认为这是代码中存在问题的主要部分:
if not (isjump):
if Counter > 17:
if keys[pygame.K_UP]:
isjump = True
isrunning = False
isslide = False
Counter = 0
else:
if jumpCount >= -10:
neg = 1
if jumpCount < 0:
neg = -1
y -= (jumpCount ** 2) * 0.5 * neg
jumpCount = jumpCount -1
else:
isJump = False
jumpCount = 10
以下是全部代码:
import pygame
import time
x = 60
y = 300
pygame.init()
Counter = 0
jumpCount = 10
imagerun = 0
imageslide = 0
imagejump = 0
isslide = False
isjump = False
ninjaheight = 128
ninjawidth = 128
isrunning = True
def redrawgame():
global isrunning
win.blit(bg, (bgX, 0)) # draws our first bg image
win.blit(bg, (bgX2, 0))
if isrunning == True:
win.blit(Run[imagerun],(x, y))
if isslide == True:
isrunning = False
win.blit(Slide[imageslide],(x, y))
if isjump == True:
win.blit(Jump[imagejump],(x, y))
pygame.display.update()
bg = (pygame.image.load('bg.jpg'))
bgX = 0
bgX2 = bg.get_width()
win = pygame.display.set_mode((1200, 500))
pygame.display.set_caption("First Game")
Run = [pygame.transform.scale(pygame.image.load('Run__0.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__1.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__2.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__3.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__4.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__5.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__6.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__7.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__8.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Run__9.png'), (ninjaheight, ninjawidth))]
Slide = [pygame.transform.scale(pygame.image.load('Slide__0.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__1.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__2.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__3.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__4.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__5.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__6.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__7.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__8.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Slide__9.png'), (ninjaheight, ninjawidth))]
Jump = [pygame.transform.scale(pygame.image.load('Jump__1.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__2.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__3.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__4.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__5.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__6.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__7.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__8.png'), (ninjaheight, ninjawidth)), pygame.transform.scale(pygame.image.load('Jump__9.png'), (ninjaheight, ninjawidth))]
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
time.sleep(0.025)
Counter += 1
keys = pygame.key.get_pressed()
if keys[pygame.K_DOWN]:
if not isslide == True:
if Counter > 17:
if jumpCount == 10:
isrunning = False
isjump = False
isslide = True
Counter = 0
imageslide = 0
if isrunning == True:
if imagerun == 9:
imagerun = 0
else:
imagerun +=1
if isslide == True:
if imageslide == 9:
isslide = False
isrunning = True
else:
imageslide += 1
if not (isjump):
if Counter > 17:
if keys[pygame.K_UP]:
isjump = True
isrunning = False
isslide = False
Counter = 0
else:
isJump = False
else:
if jumpCount >= -10:
neg = 1
if jumpCount < 0:
neg = -1
y -= (jumpCount ** 2) * 0.5 * neg
jumpCount = jumpCount -1
else:
isJump = False
jumpCount = 10
bgX -= 15.4 # Move both background images back
bgX2 -= 15.4
if bgX < bg.get_width() * -1: # If our bg is at the -width then reset its position
bgX = bg.get_width()
if bgX2 < bg.get_width() * -1:
bgX2 = bg.get_width()
redrawgame()
if isslide == False and isjump == False:
isrunning = True
pygame.quit()
很抱歉,我把整个代码都放进了IDK,但我知道错误发生在哪里。我希望有人能帮忙。这是我做过的最难的程序,所以它非常混乱。请随意评论其他把事情搞砸的事情。非常感谢所有善良的人去帮助像我这样的人。谢谢你,一个在互联网上随机出现的家伙
目前没有回答
相关问题 更多 >
编程相关推荐