Как сделать игру МАРИО на Python - Часть 2 (Игрок, Перемещение)
HTML-код
- Опубликовано: 26 ноя 2024
- Как сделать игру Mario? Не так просто, но мы постараемся
Базовый курс Python: boosty.to/sima...
Код и все файлы игры: boosty.to/sima...
В этой серии видеороликов я покажу как сделать интересную игру, используя всего лишь одну механику из игры Марио. Оригинальная игра состоит из огромного количества механик, которые ради интереса можно изучить и внедрить в свои проекты
Как добавить полноэкранный режим : • Как сделать игру на ве...
Discord: / discord
ВК: simagames
#simagames #pygame #game #mario #python #программирование #gamedev #gamedevelopment
Спасибо, понятно и интересно
Не забудь отписать свое мнение в комменты =)
привет! классный ролик
Спасибо)
Помогите прыжок не работает с гравитацией игрался ничего
Когда летсплеи по маинкрафту?) Ждём
А ролик как всегда топ
Сначала надо Майн написать))
@@симагеймс а чтобы написать майн, еще пару лет учить Java)
@@kolondich А чтобы пару лет учить Java, надо сначала родиться)
@@benger7178 а чтобы родиться нужно подождать 13 миллиардов лет (возраст вселенной )
@@kolondich ну я пару лет учил Java, там не так сложно))
он никак не прыгает можешь помочь
строка 43 self.gravity = 0.5 заміни на self.gravity = 0.4
@@robotrobot5805 спасибо пупсик
@@robotrobot5805 Дай бог тебе здоровья
Как добавить картинку
Не прыгает ни в какую... Ошибку не выдаёт, влево - вправо ходит
Попробуй с гравитацией поиграть, больше-меньше её сделать
@@симагеймс Спасибо! на одну десятую меньше - работает О_о. Код 1 в 1 как ваш. Почему так вышло, от чего зависит?
@@svenn6377 сложно сказать. У меня с этим не было проблем, но пара человек уже написала) Возможно что-то с округлением чисел
@@симагеймс спасибо за ответы.
TypeError: Entity.update() missing 1 required positional argument: 'self'
Помогите пожалуйста, я на 4:41
Привет, ты скорее всего в игроке забыл в функции update параметр self
вот код
ground_image = pygame.image.load('ground.png')
ground_image = pygame.transform.scale(ground_image, (804, 60))
GROUND_H = ground_image.get_height()
enemy_image = pygame.image.load('goomba.png')
enemy_image = pygame.transform.scale(ground_image, (80, 80))
enemy_dead_image = pygame.image.load('goomba_dead.png')
enemy_dead_image = pygame.transform.scale(ground_image, (80, 80))
player_image = pygame.image.load('mario.png')
player_image = pygame.transform.scale(player_image, (60, 80))
class Entity:
def __init__(self, image):
self.image = image
self.rect = self.image.get_rect()
self.x_speed = 0
self.y_speed = 0
self.speed = 5
self.is_out = False
self.is_dead = False
self.jump_speed = -12
self.gravity = 0.5
self.is_grounded = False
def handle_input(self):
pass
def kill(self, dead_image):
self.image = dead_image
self.is_dead = True
self.x_speed = -self.x_speed
self.y_speed = self.jump_speed
def update(self):
self.rect.x += self.x_speed
self.y_speed += self.gravity
self.rect.y += self.y_speed
if self.is_dead:
if self.rect.top > H - GROUND_H:
self.is_out = True
else:
self.handle_input()
if self.rect.bottom > H - GROUND_H:
self.is_grounded = True
self.y_speed = 0
self.rect.bottom = H - GROUND_H
def draw(self, surface):
surface.blit(self.image, self.rect)
class Player(Entity):
def __init__(self):
super().__init__(player_image)
def handle_input(self):
self.x_speed = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
self.x_speed = -self.speed
elif keys[pygame.K_d]:
self.x_speed = self.speed
if self.is_grounded and keys[pygame.K_SPACE]:
self.is_grounded = False
self.jump()
def respawn(self):
self.is_out = False
self.is_dead = False
self.rect.midbottom = (W // 2, H - GROUND_H)
def jump(self):
self.y_speed = self.jump.speed
player = Player()
score = 0
Крутяк 🥳 Ты снимаешь 😍 прям как Я 🧐 можешь оценить 😇
снова привет марио бегает но проблемы с прыжком выкидывает вот такую ошибку
Traceback (most recent call last):
File "D:\mario\mario.py", line 112, in
player.update()
File "D:\mario\mario.py", line 64, in update
self.handle_input()
File "D:\mario\mario.py", line 89, in handle_input
self.jump()
File "D:\mario\mario.py", line 97, in jump
self.y_speed = self.jump.speed
AttributeError: 'function' object has no attribute 'speed'
попробуйте написать "self.jump_speed"
У тебя после speed точка стоит, а это функция в классе Player. Думает, что ты у функции переменную хочешь найти
Заработало