first commit

main
夏铭 9 months ago
parent 6d0ffc4310
commit ef8a22fb2f

@ -15,8 +15,8 @@ class Info:
def create_state_labels(self):
self.state_labels = []
if self.state == 'main_menu':
self.state_labels.append((self.create_label('1 PLAYER GAME'),(272,360)))
self.state_labels.append((self.create_label('2 PLAYER GAME'), (272, 405)))
self.state_labels.append((self.create_label('1 PLAYER '),(272,360)))
self.state_labels.append((self.create_label('2 PLAYER'), (272, 405)))
self.state_labels.append((self.create_label('TOP - '), (290, 465)))
self.state_labels.append((self.create_label('00000'), (400, 465)))
elif self.state == 'load_screen':

@ -28,6 +28,7 @@ class Player(pygame.sprite.Sprite):
self.face_right = True
self.dead = False
self.big = False
self.can_jump = True
def setup_velocities(self):
speed = self.player_data['speed'] # 读出速度数据
@ -37,10 +38,12 @@ class Player(pygame.sprite.Sprite):
self.max_walk_vel = speed['max_walk_speed'] # 记录速度属性 v速度 a加速 t转身
self.max_run_vel = speed['max_run_speed']
self.max_y_vel = speed['max_y_velocity']
self.jump_vel = speed['jump_velocity']
self.walk_accel = speed['walk_accel']
self.run_accel = speed['run_accel']
self.turn_accel = speed['turn_accel']
self.gravity = C.GRAVITY
self.anti_gravity = C.ANTI_GRAVITY
self.max_y_vel = self.max_walk_vel
self.x_accel = self.walk_accel
@ -100,14 +103,22 @@ class Player(pygame.sprite.Sprite):
self.image = self.frames[self.frame_index]
self.rect = self.image.get_rect()
def update(self,keys):
self.current_time = pygame.time.get_ticks()
self.handle_states(keys)
def handle_states(self,keys): # 状态检测
self.can_jump_or_not(keys)
if self.state == 'stand':
self.stand(keys)
elif self.state == 'walk':
self.walk(keys)
elif self.state == 'jump':
self.jump(keys)
elif self.state == 'fall':
self.fall(keys)
elif self.state == 'basketball':
self.play_basketball(keys)
@ -116,6 +127,12 @@ class Player(pygame.sprite.Sprite):
else:
self.image = self.left_frames[self.frame_index]
def can_jump_or_not(self,keys):
if not keys[pygame.K_SPACE]:
self.can_jump = True
def stand(self,keys):
self.frame_index = 0
self.x_vel = 0
@ -126,6 +143,9 @@ class Player(pygame.sprite.Sprite):
if keys[pygame.K_LEFT]:
self.face_right = False
self.state = 'walk'
if keys[pygame.K_SPACE] and self.can_jump:
self.state = 'jump'
self.y_vel = self.jump_vel
def walk(self,keys):
self.current_time = pygame.time.get_ticks()
@ -136,6 +156,11 @@ class Player(pygame.sprite.Sprite):
self.max_x_vel = self.max_walk_vel
self.x_accel = self.walk_accel
if keys[pygame.K_SPACE] and self.can_jump:
self.state = 'jump'
self.y_vel = self.jump_vel
if self.current_time - self.walking_timer > self.calc_frame_duration():
if self.frame_index < 3:
self.frame_index += 1
@ -167,9 +192,37 @@ class Player(pygame.sprite.Sprite):
self.state = 'stand'
def jump(self,keys):
pass
self.frame_index = 4
self.y_vel += self.anti_gravity
self.can_jump = False
if self.y_vel >= 0:
self.state = 'fall'
if keys[pygame.K_RIGHT]:
self.x_vel = self.calc_vel(self.x_vel,self.x_accel,self.max_x_vel,True)
elif keys[pygame.K_LEFT]:
self.x_vel = self.calc_vel(self.x_vel, self.x_accel, self.max_x_vel, False)
if not keys[pygame.K_SPACE]:
self.state = 'fall'
def fall(self,keys):
self.y_vel = self.calc_vel(self.y_vel,self.gravity,self.max_y_vel)
# TODO WORKAROUND
if self.rect.bottom > C.GROUND_HEIGHT:
self.rect.bottom = C.GROUND_HEIGHT
self.y_vel = 0
self.state = 'walk'
if keys[pygame.K_RIGHT]:
self.x_vel = self.calc_vel(self.x_vel,self.x_accel,self.max_x_vel,True)
elif keys[pygame.K_LEFT]:
self.x_vel = self.calc_vel(self.x_vel, self.x_accel, self.max_x_vel, False)
def play_basketball(self,keys):
pass

@ -1,9 +1,11 @@
SCREEN_W,SCREEN_H = 800,600
SCREEN_SIZE = (SCREEN_W, SCREEN_H)
GROUND_HEIGHT = SCREEN_H - 62
BG_MULTI = 2.68
PLAYER_MULTI = 2.9
GRAVITY = 1.0
ANTI_GRAVITY = 0.3
FONT = 'FixedSys.ttf'
Loading…
Cancel
Save