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

Проблема с считыванием нажатий клавиш

14.04.2020, 00:23. Показов 1542. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчани. Я с вопросом, написал простую заготовку, с обычным движением, поддержкой музыки и прорисовкой спрайтов.
Обычное движение оказалось не так и обычным, проблема с вводом клавиш, они попросту не регистрируются, снизу приложен код:
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
import pygame,sys
size=height,width=[852,480]
pygame.init()
screen=pygame.display.set_mode(size)
pygame.mixer.music.load('music.mp3')
pygame.mixer.music.play()
bg=pygame.image.load('bg.jpg')
clock=pygame.time.Clock()
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'),]
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'),]
image_file=pygame.image.load('standing.png')
image=pygame.image.load('L1.png')
class player(pygame.sprite.Sprite):
    def __init__(self,xspeed,x,y,isJump,Jumpcount,lastmove,walkCount):
        self.x=x
        self.lastmove=lastmove
        self.y=y
        self.isJump=isJump
        self.Jumpcount=Jumpcount
        self.xspeed=xspeed
    def jump(self):
        if self.jumpCount >= - 10:
            if self.jumpCount < 0 :
                self.y+= (self.jumpCount**2)/2
            else:
                self.y-= (self.jumpCount**2) / 2
            self.jumpCount-=1
        else:
            self.isJump= False
            self.jumpCount= 10
    def moveLeft(self):
        if self.walkCount+1==36:
            self.walkCount=0
        else:
            self.walkCount+=1
            image=pygame.image.load(walkRight[self.walkCount//4])
        if self.x-self.xspeed>0:
            self.x+=-self.xspeed
            self.lastmove='Left'
    def moveRight(self):
        if self.walkCount+1==36:
            self.walkCount=0
        else:
            self.walkCount+=1
            image=pygame.image.load(walkLeft[self.walkCount//4])
        if self.x+self.xspeed<width:
            self.x+=self.xspeed
            self.lastmove='Right'
Player228=player(10,40,50,False,10,'Right',1)
while True:
    clock.tick(36)
    keys = pygame.key.get_pressed()
    if keys[pygame.K_SPACE]:
        player.jump()
    if keys[pygame.K_a]:
        player.moveLeft()
    if keys[pygame.K_d]:
        player.moveRight()
    screen.blit(bg,(0,0))
    screen.blit(image_file,(Player228.x,Player228.y))
    pygame.display.flip()
Большая просьба указать на ошибку, ибо и вправду не понимаю что и так, заранее благодарю!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2020, 00:23
Ответы с готовыми решениями:

Обработка нажатий клавиш
У меня есть программа с несколькими потоками, один из них - это обработка нажатий клавиш, но я не знаю как при выходе из программы прервать...

Не работает код с считыванием клавиш
Решил написать код который при отпускании пробела выводил бы сообщение но он этого не делает. Вот код import javax.swing.*; import...

Перехват нажатий клавиш
Уже всё перерыл, чтобы найти что-то подобное! Если нахожу пример - он либо не компилируется, либо сделан на другом языке! Попробую...

2
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,300
14.04.2020, 04:40
Выложите изображения
0
0 / 0 / 0
Регистрация: 13.04.2020
Сообщений: 2
14.04.2020, 14:42  [ТС]
Здравствуйте, сейчас приложу,но саму проблему уже решил, так что просто приложу результат
8JhHT62 галерея с изображениями на imgur
Кликните здесь для просмотра всего текста
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
import pygame,sys
size=width,height=[852,480]
pygame.init()
screen=pygame.display.set_mode(size)
pygame.mixer.music.load('music.mp3')
pygame.mixer.music.play()
bg=pygame.image.load('bg.jpg')
clock=pygame.time.Clock()
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')]
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')]
image_file=pygame.image.load('standing.png')
class player(pygame.sprite.Sprite):
    def __init__(self,xspeed,x,y,isJump,jumpcount,lastmove,walkCount):
        self.x=x
        self.lastmove=lastmove
        self.y=y
        self.isJump=isJump
        self.jumpcount=jumpcount
        self.xspeed=xspeed
        self.walkCount=walkCount
    def jump(self):
        if not(self.isJump):
            if keys[pygame.K_SPACE]:
                self.isJump=True
                self.lastmove='standing'
        else:
            if self.jumpcount >= - 10:
                if self.jumpcount < 0 :
                    self.y+= (self.jumpcount**2)/2
                else:
                    self.y-= (self.jumpcount**2) / 2
                self.jumpcount-=1
            else:
                self.isJump= False
                self.jumpcount= 10
    def moveLeft(self):
        self.lastmove='Left'
        if self.walkCount+1>=9:
            self.walkCount=0
        else:
            self.walkCount+=1
        if self.x-self.xspeed>0:
            self.x+=-self.xspeed
    def moveRight(self):
        if self.walkCount+1>=9:
            self.walkCount=0
        else:
            self.walkCount+=1
        if self.x+self.xspeed<width-40:
            self.x+=self.xspeed
            self.lastmove='Right'
Player228=player(10,40,350,False,10,'standing',0)
while True:
    clock.tick(36)
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            pygame.quit()
    keys = pygame.key.get_pressed()
    Player228.jump()
    if keys[pygame.K_a]:
        Player228.moveLeft()
    if keys[pygame.K_d]:
        Player228.moveRight()
    screen.blit(bg,(0,0))
    if Player228.lastmove=='Right':
        screen.blit(walkRight[Player228.walkCount],(Player228.x,Player228.y))
    elif Player228.lastmove=='Left':
        screen.blit(walkLeft[Player228.walkCount],(Player228.x,Player228.y))
    else:
        screen.blit(image_file,(Player228.x,Player228.y))
    pygame.display.flip()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.04.2020, 14:42
Помогаю со студенческими работами здесь

Перехват нажатий клавиш
Доброго времени суток! Изучил все возможные примеры , но не понимаю почему мой код, независимо от установленной раскладки перехватывает...

Эмулирование нажатий клавиш
Вводная: С++ builder 6. Программа А та что пишу я. Программа Б не моя. Вопросы: 1)Как из неактивного окна программы А...

Эмуляция нажатий клавиш
У меня есть залогированы клавиши в блокноте в таком виде(много): Как мне заставить их из блокнота или из Мемо нажиматся в цикле? ...

Перехват нажатий клавиш C++
Необходимо разработать приложение, которое будет логировать ввод символов, а так же нажатие иных клавиш (клавиатуры). При этом должна...

Имитирование нажатий клавиш
Привет, форумчане! Как имитировать нажатие клавиш на консольном c#? Если это возможно. Если нет то на каком языке это можно сделать? На...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru