#python #pygame
#python #pygame
Вопрос:
Я знаю, как получить движение влево и вправо, но кто-нибудь знает, как вставать и опускаться в pygame я использую pygame locals, pygame, sys, glob. Любая помощь была бы очень признательна, большая часть кода основана на: https://pythonprogramming.altervista.org/platform-game-in-detail-part-1/?doing_wp_cron=1603309265.4902870655059814453125
from pygame.locals import *
import pygame
import sys
import glob
map1 = """wwwwwwwwwwwwwwwwwwwwwwwwwwwww
w w
w w
w w
w w
w
w d
w p
w
w w
w w
w w
w w
w w
w w
wwwwwwwwwwwwwwwwwwwwwwwwwwwww"""
pygame.display.set_icon(pygame.image.load("C:/Users/cuerv/Downloads/flappy-bird-assets-master/flappy-bird-assets-master/favicon.ico"))
pygame.display.set_caption("Knock Knight")
screen = pygame.display.set_mode((480, 250))
moving_right = False
moving_left = False
moving_up = False
moving_down = False
player_location = [50,50]#remember its a fucking list
#-----------------------------
door = pygame.image.load("C:/Users/cuerv/Downloads/Door.png")
door_rect = door.get_rect(center=(100, 250))
tile = pygame.image.load("C:/Users/cuerv/Downloads/Wall.png")
tile_rect = tile.get_rect(center=(100, 256))
player = pygame.image.load("C:/Users/cuerv/Downloads/Player.png").convert()
player_rect = player.get_rect(center=(100, 256))
def init_display():
global screen, tile, door, player
def tiles(map1):
global tile, door, player
for y, line in enumerate(map1):
#counts lines
for x, c in enumerate(line):
#counts caracters
if c == "w":
#caracter is w
screen.blit(tile, (x * 16.18, y * 15))
if c == "d":
screen.blit(door, (x * 16.2, y * 15))
if c == "p":
screen.blit(player, player_location)
map1 = map1.splitlines()
pygame.init()
init_display()
clock = pygame.time.Clock()
while True:
tiles(map1)
if moving_right == True:
player_location[0] = 4
if moving_left == True:
player_location[0] -= 4
if moving_up == True:
player_location[0] =8
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == KEYDOWN:
if event.key == K_RIGHT:
moving_right = True
if event.key == K_LEFT:
moving_left = True
if event.key == K_UP:
moving_up = True
if event.key == K_DOWN:
moving_down = True
if event.type == KEYUP:
if event.key == K_RIGHT:
moving_right = False
if event.key == K_LEFT:
moving_left = False
if event.key == K_UP:
moving_up = False
if event.key == K_DOWN:
moving_down = False
pygame.display.update()
clock.tick(60)
Комментарии:
1. для движения вверх и вниз вам нужно изменить 2-ю координату. например
player_location[1] = 4
Ответ №1:
Позиция игрока определяется 2 координатами (x, y). Для движения вверх и вниз вам нужно изменить 2-ю (y) координату (например player_location[1] -= 4
):
while True:
tiles(map1)
if moving_right == True:
player_location[0] = 4
if moving_left == True:
player_location[0] -= 4
if moving_up == True:
player_location[1] -= 4
if moving_down == True:
player_location[1] = 4