Python 如何让角色在Pygame中跳跃?
我正在尝试做一个平板游戏,我想让圆圈跳跃,但每当我尝试跳跃时,我都会出现以下错误,我找到了各种跳跃方法,但没有一种有效。 我认为错误是每当我跳转时,就会出现一个浮点数,draw方法不能包含浮点数,只能包含整数 以下是游戏的代码:Python 如何让角色在Pygame中跳跃?,python,pygame,Python,Pygame,我正在尝试做一个平板游戏,我想让圆圈跳跃,但每当我尝试跳跃时,我都会出现以下错误,我找到了各种跳跃方法,但没有一种有效。 我认为错误是每当我跳转时,就会出现一个浮点数,draw方法不能包含浮点数,只能包含整数 以下是游戏的代码: import pygame import os import time import random pygame.font.init() Width, Height = 1280, 720 win = pygame.display.set_mode((Width, H
import pygame
import os
import time
import random
pygame.font.init()
Width, Height = 1280, 720
win = pygame.display.set_mode((Width, Height))
pygame.display.set_caption("Parkour Ball")
BG = pygame.image.load(os.path.join("assets", "Background.jpg"))
class Ball:
def __init__(self, x, y):
self.x = x
self.y = y
def draw(self, window):
pygame.draw.circle(window, (255,0,0), (self.x, self.y), 25)
def main():
run = True
FPS = 60
clock = pygame.time.Clock()
level = 0
lives = 10
main_font = pygame.font.SysFont("comicsans", 50)
lost_font = pygame.font.SysFont("comicsans", 60)
spikes = []
holes = []
hammers = []
platforms = []
enemies = []
player_vel = 5
jump = False
jumpCount = 10
player = Ball(300, 450)
lost = False
lost_popup = 0
def redraw():
win.blit(BG, (0,0))
player.draw(win)
pygame.display.update()
while run:
clock.tick(FPS)
redraw()
if lives == 0:
lost = True
lost_popup += 1
if lost:
if lost_popup > FPS * 3:
run = False
else:
continue
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player.x - player_vel - 25 > 0:
player.x -= player_vel
if keys[pygame.K_RIGHT] and player.x + player_vel + 25 < Width:
player.x += player_vel
if keys[pygame.K_w]and player.y - player_vel > 0: #up
player.y -= player_vel
if keys[pygame.K_s] and player.y + player_vel < Height: #down
player.y += player_vel
if not(jump):
if keys[pygame.K_SPACE]:
jump = True
else:
if jumpCount >= -10:
neg = 1
if jumpCount < 0:
neg = -1
player.y -= (jumpCount ** 2) / 2 * neg
jumpCount -= 1
main()
导入pygame
导入操作系统
导入时间
随机输入
pygame.font.init()
宽度,高度=1280720
win=pygame.display.set_模式((宽度、高度))
pygame.display.set_标题(“跑酷球”)
BG=pygame.image.load(os.path.join(“assets”、“Background.jpg”))
班级舞会:
定义初始化(self,x,y):
self.x=x
self.y=y
def绘图(自,窗口):
pygame.draw.circle(窗口,(255,0,0),(self.x,self.y),25)
def main():
运行=真
FPS=60
clock=pygame.time.clock()
级别=0
寿命=10
main\u font=pygame.font.SysFont(“comicsans”,50)
lost_font=pygame.font.SysFont(“comicsans”,60)
尖峰=[]
孔=[]
锤子=[]
平台=[]
敌人=[]
玩家等级=5
跳转=错误
跳数=10
球员=球(300450)
丢失=错误
丢失\u弹出窗口=0
def redraw():
温·布利特(背景,(0,0))
球员。平局(获胜)
pygame.display.update()
运行时:
时钟滴答声(FPS)
重画
如果寿命=0:
迷失=真实
丢失\u弹出窗口+=1
如果丢失:
如果丢失\u弹出窗口>FPS*3:
运行=错误
其他:
持续
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
keys=pygame.key.get_pressed()
如果键[pygame.K_LEFT]和player.x-player_vel-25>0:
player.x-=player_级别
如果键[pygame.K_RIGHT]和player.x+player_vel+25<宽度:
player.x+=player_级别
如果键[pygame.K_w]和player.y-player_vel>0:#向上
player.y-=player_级别
如果键[pygame.K_s]和player.y+player_vel=-10:
负=1
如果跳线计数<0:
负=-1
player.y-=(跳跃计数**2)/2*neg
跳转计数-=1
main()
坐标必须是整数值。将浮点坐标转换为整数坐标:
pygame.draw.circle(窗口,(255,0,0),(self.x,self.y),25)
pygame.draw.circle(窗口,(255,0,0),(圆形(self.x),圆形(self.y)),25)
错误是什么?看起来你忘记复制/粘贴了。