Pygame 游戏帮助:Easing/Acceleration
Pygame game help: Easing/Acceleration
嗨,有人可以帮我玩 pygame 游戏吗,这是我的第一款游戏,我真的很不擅长这个。本质上,我正在尝试制作一种相扑游戏,其中 2 名玩家在冰环(圆形舞台)上,他们必须互相推开才能得分,我现在在冰物理方面遇到了麻烦,我知道必须有按下键时某种类型的加速和释放时的摩擦,我现在正在尝试这样做,但目前当按下键时,它只会增加一次速度,而不是持续增加,这意味着你必须垃圾邮件点击它才能走快点。
另外,如果你愿意帮助我玩我的游戏,如果我以后有任何问题,我将不胜感激,呃,如果你想补充,我有不和谐之处,谢谢:vincent#3996
import pygame, sys, time
from pygame.locals import *
import random
#Colors
colorRed=pygame.Color(241,59,62)
colorPurple=pygame.Color(200,254,249)
colorBlue=pygame.Color(52, 207, 235)
colorGreen=pygame.Color(100,182,100)
colorWhite=pygame.Color(255,250,250)
colorBlack=pygame.Color(0,0,0)
colorOrange=pygame.Color(242,164,0)
colorBrown=pygame.Color(148,103,58)
#Dimensions
w=800
h=600
pygame.init()
fpsClock=pygame.time.Clock()
screen=pygame.display.set_mode((w,h))
pygame.display.set_caption ('SUMO')
centerX=w//2
centerY=h//2
#Stage
stageR=250
def stage (centerX,centerY):
"""stage (centerX,centerY) - creates a stage with given centerpoint"""
pygame.draw.circle(screen, colorBlue, (centerX,centerY),stageR)
#Character 1
xR=int((stageR//10))
x1=int(centerX-(stageR*0.8))
y1=centerY
x1_dir=0
y1_dir=0
x1_right=False
def char1 (x1,y1):
"""char1 (x1,y1) - creates char1 at given coordinates"""
pygame.draw.circle(screen, colorRed, (x1,y1),xR)
print (x1)
print (centerX)
if x1_right==True:
x1_dir+2
while True:
screen.fill(colorBlack)
for event in pygame.event.get():
#Game Exit
if event.type== QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_d:
x1_dir+=1
x1_right=True
if event.key==K_a:
x1_dir-=1
if event.key==K_w:
y1_dir-=1
if event.key==K_s:
y1_dir+=1
if event.type==KEYUP:
if event.key==K_d:
x1_right=False
stage (centerX,centerY)
char1 (x1,y1)
x1+=x1_dir
y1+=y1_dir
pygame.display.update()
fpsClock.tick(60)
KEYDOWN
事件仅在按下键时发生一次(参见 pygame.event
)。
使用pygame.key.get_pressed()
获取每帧中按键的当前状态。
如果按下 a 或 d,则增加 x 方向的速度 (x1_dir
),如果没有按下任何一个键,则减小速度.
如果按下 w 或 s 则增加 y 方向的速度 (y1_dir
),如果没有按下任何一个键则减小速度.例如:
while True:
screen.fill(colorBlack)
for event in pygame.event.get():
#Game Exit
if event.type== QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_d:
x1_right=True
if event.type==KEYUP:
if event.key==K_d:
x1_right=False
keys = pygame.key.get_pressed()
if keys[K_d] or keys[K_a]:
x1_dir += 0.1 if keys[K_d] else -0.1
else:
x1_dir *= 0.98
if keys[K_w] or keys[K_s]:
y1_dir += 0.1 if keys[K_s] else -0.1
else:
y1_dir *= 0.98
为了平滑移动,您必须使用浮点值。使用 round
将浮点数转换为整型整数 e.g.
char1(round(x1), round(y1))
嗨,有人可以帮我玩 pygame 游戏吗,这是我的第一款游戏,我真的很不擅长这个。本质上,我正在尝试制作一种相扑游戏,其中 2 名玩家在冰环(圆形舞台)上,他们必须互相推开才能得分,我现在在冰物理方面遇到了麻烦,我知道必须有按下键时某种类型的加速和释放时的摩擦,我现在正在尝试这样做,但目前当按下键时,它只会增加一次速度,而不是持续增加,这意味着你必须垃圾邮件点击它才能走快点。 另外,如果你愿意帮助我玩我的游戏,如果我以后有任何问题,我将不胜感激,呃,如果你想补充,我有不和谐之处,谢谢:vincent#3996
import pygame, sys, time
from pygame.locals import *
import random
#Colors
colorRed=pygame.Color(241,59,62)
colorPurple=pygame.Color(200,254,249)
colorBlue=pygame.Color(52, 207, 235)
colorGreen=pygame.Color(100,182,100)
colorWhite=pygame.Color(255,250,250)
colorBlack=pygame.Color(0,0,0)
colorOrange=pygame.Color(242,164,0)
colorBrown=pygame.Color(148,103,58)
#Dimensions
w=800
h=600
pygame.init()
fpsClock=pygame.time.Clock()
screen=pygame.display.set_mode((w,h))
pygame.display.set_caption ('SUMO')
centerX=w//2
centerY=h//2
#Stage
stageR=250
def stage (centerX,centerY):
"""stage (centerX,centerY) - creates a stage with given centerpoint"""
pygame.draw.circle(screen, colorBlue, (centerX,centerY),stageR)
#Character 1
xR=int((stageR//10))
x1=int(centerX-(stageR*0.8))
y1=centerY
x1_dir=0
y1_dir=0
x1_right=False
def char1 (x1,y1):
"""char1 (x1,y1) - creates char1 at given coordinates"""
pygame.draw.circle(screen, colorRed, (x1,y1),xR)
print (x1)
print (centerX)
if x1_right==True:
x1_dir+2
while True:
screen.fill(colorBlack)
for event in pygame.event.get():
#Game Exit
if event.type== QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_d:
x1_dir+=1
x1_right=True
if event.key==K_a:
x1_dir-=1
if event.key==K_w:
y1_dir-=1
if event.key==K_s:
y1_dir+=1
if event.type==KEYUP:
if event.key==K_d:
x1_right=False
stage (centerX,centerY)
char1 (x1,y1)
x1+=x1_dir
y1+=y1_dir
pygame.display.update()
fpsClock.tick(60)
KEYDOWN
事件仅在按下键时发生一次(参见 pygame.event
)。
使用pygame.key.get_pressed()
获取每帧中按键的当前状态。
如果按下 a 或 d,则增加 x 方向的速度 (x1_dir
),如果没有按下任何一个键,则减小速度.
如果按下 w 或 s 则增加 y 方向的速度 (y1_dir
),如果没有按下任何一个键则减小速度.例如:
while True:
screen.fill(colorBlack)
for event in pygame.event.get():
#Game Exit
if event.type== QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_d:
x1_right=True
if event.type==KEYUP:
if event.key==K_d:
x1_right=False
keys = pygame.key.get_pressed()
if keys[K_d] or keys[K_a]:
x1_dir += 0.1 if keys[K_d] else -0.1
else:
x1_dir *= 0.98
if keys[K_w] or keys[K_s]:
y1_dir += 0.1 if keys[K_s] else -0.1
else:
y1_dir *= 0.98
为了平滑移动,您必须使用浮点值。使用 round
将浮点数转换为整型整数 e.g.
char1(round(x1), round(y1))