Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.09.2021
Сообщений: 1

Не получается нормально реализовать второго персонажа

02.06.2022, 10:26. Показов 591. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import pygame
pygame.init() #HРекомендованно для инициализации python
 
win = pygame.display.set_mode((500, 400))
pygame.display.set_caption("First Game")
 
 
# Это выходит за пределы цикла while, в верхней части программы.
walkRight = [pygame.image.load('R1.png'), pygame.image.load('R2.png'), pygame.image.load('R3.png'), pygame.image.load('R4.png'), pygame.image.load('R5.png'), pygame.image.load('R6.png'), pygame.image.load('R7.png'), pygame.image.load('R8.png'), pygame.image.load('R9.png')]
walkLeft = [pygame.image.load('L1.png'), pygame.image.load('L2.png'), pygame.image.load('L3.png'), pygame.image.load('L4.png'), pygame.image.load('L5.png'), pygame.image.load('L6.png'), pygame.image.load('L7.png'), pygame.image.load('L8.png'), pygame.image.load('L9.png')]
walkRightE = [pygame.image.load('R1E.png'), pygame.image.load('R2E.png'), pygame.image.load('R3E.png'), pygame.image.load('R4E.png'), pygame.image.load('R5E.png'), pygame.image.load('R6E.png'), pygame.image.load('R7E.png'), pygame.image.load('R8E.png'), pygame.image.load('R9E.png')]
walkLeftE = [pygame.image.load('L1E.png'), pygame.image.load('L2E.png'), pygame.image.load('L3E.png'), pygame.image.load('L4E.png'), pygame.image.load('L5E.png'), pygame.image.load('L6E.png'), pygame.image.load('L7E.png'), pygame.image.load('L8E.png'), pygame.image.load('L9E.png')]
bg = pygame.image.load('bg.jpg')
char = pygame.image.load('standing.png')
char2= pygame.image.load('R11E.png')
clock = pygame.time.Clock()
 
 
class player(object):
    def __init__(self,x,y,width,height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.vel = 5
        self.isJump = False
        self.jumpCount = 10
        self.left = False
        self.right = False
        self.walkCount = 0
 
    
   
    def draw(self, win):
        if self.walkCount + 1 >= 27:
            self.walkCount = 0
        if self.left:
            win.blit(walkLeft[self.walkCount // 3], (self.x, self.y))  # целочисленное деление на 3
            self.walkCount += 1
        elif self.right:
            win.blit(walkRight[self.walkCount // 3], (self.x, self.y))
            self.walkCount += 1
        else:
            win.blit(char, (self.x, self.y))
    
    def draw(self2, win):
        if self2.walkCount + 1 >= 27:
            self2.walkCount = 0
        if self2.left:
            win.blit(walkLeftE[self2.walkCount // 3], (self2.x, self2.y))  # целочисленное деление на 3
            self2.walkCount += 1
        elif self2.right:
            win.blit(walkRightE[self2.walkCount // 3], (self2.x, self2.y))
            self2.walkCount += 1
        else:
            win.blit(char2, (self2.x, self2.y))      
  
 
def redraw_game_window():
    global walkCount
    win.blit(bg,(0,0))
    man.draw(win)
    mob.draw(win)
    pygame.display.update()
 
 
# mainloop
man = player(245, 340, 64, 64)
mob =player(250, 340, 64, 64)
run = True
while run: 
    clock.tick(27)
    pygame.time.delay(100) # задержка 100 мс
    for event in pygame.event.get(): # проверка событий, являющихся действиями пользователя
        if event.type == pygame.QUIT: 
            run = False
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and man.x > man.vel:
        man.x -= man.vel
        man.left = True
        man.right = False
    elif keys[pygame.K_RIGHT] and man.x < 500 - man.width - man.vel:
        man.x += man.vel
        man.right = True
        man.left = False
    else:
        man.right = False
        man.left = False
        man.walkCount = 0
 
    if not man.isJump:
        if keys[pygame.K_UP]:
            man.isJump = True
            man.left = False
            man.right = False
            man.walkCount = 0
    else:
        if man.jumpCount >= -10:
            neg = 1
            if man.jumpCount < 0:
                neg = -1
            man.y -= man.jumpCount**2 * 0.5 * neg  # 2 степени 2
            man.jumpCount -= 1
            # т 10-0 (прыжок увеличивается) от -1 до -10 прыжок уменьшается обратно в исходное положение из-за отрицательного знака
        else:
            man.isJump = False
            man.jumpCount = 10
    
    #2-й игрок
    
    for event in pygame.event.get(): # check of events which are actions from user
        if event.type == pygame.QUIT: # literally if you click 'X"
            run = False
    keys = pygame.key.get_pressed()
    if keys[pygame.K_a] and mob.x > mob.vel:
        mob.x -= mob.vel
        mob.left = True
        mob.right = False
    elif keys[pygame.K_d] and mob.x < 500 - mob.width - mob.vel:
       mob.x += mob.vel
       mob.right = True
       mob.left = False
    else:
        mob.right = False
        mob.left = False
        mob.walkCount = 0
 
    if not mob.isJump:
        if keys[pygame.K_w]:
            mob.isJump = True
            mob.left = False
            mob.right = False
            mob.walkCount = 0
    else:
        if mob.jumpCount >= -10:
            neg = 1
            if mob.jumpCount < 0:
                neg = -1
            mob.y -= mob.jumpCount**2 * 0.5 * neg  # to the power of 2
            mob.jumpCount -= 1
            # from 10-0 (jump increases) from -1 to -10 jump decreases back to original position due to neg sign
        else:
            mob.isJump = False
            mob.jumpCount = 10
 
    redraw_game_window()
 
 
 
pygame.quit()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2022, 10:26
Ответы с готовыми решениями:

есть два класса. конструктор второго класса должен вызвать констр первого класса. не получается это реализовать
class set: public class_bit { private: int MaxPower; // максимальная мощность множества class_bit BitField; // битовое поле...

Дифференциальное уравнение второго порядка не получается в получается в маткаде
Дифференциальное уравнение второго порядка не получается в маткаде. Помогите решить

Не получается настроить персонажа на понимание уровня земли
Создал персонажа, настроил бег, сделал нормальный прыжок с гравитацией. Теперь я не могу настроить уровень земли. Персонаж прыгает 1 раз, а...

1
172 / 112 / 65
Регистрация: 26.06.2020
Сообщений: 334
02.06.2022, 13:54
Что конкретно не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2022, 13:54
Помогаю со студенческими работами здесь

Реализовать перемещение персонажа
Доброго времени! Столкнулся с проблемой(прокрастинацией в коде!). Пытаюсь реализовать перемещение персонажа и для разного типа...

Как реализовать прыжок персонажа?
Пишу для практики игру, которая выскакивает в хроме, когда интернета нет. Есть две вещи, которые не получается реализовать в коде. 1....

Как реализовать выбор персонажа в игре?
Пишу игру и застопорился на реализации выбора персонажа. Скажем, у меня есть два класса персонажей, игрок выбирает один из них, после чего...

Ноут с Windows 10 не загружается с первого раза, а со второго - все нормально
Установил 10-ку на ноут, но при первой загрузке, на заставке - зависает, помогает только выключение через зажатую кнопку вкл.\выкл. На...

Возможно ли реализовать создание персонажа самим игроком?
Юнити 2Д. Ну когда чел заходит в игру, была бы кнопка типа создать персонажа, а потом он может выбрать прическу, одежду и тд.. Видеоуроков...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru