1

Тема: Вікно гри закривається автоматичнот чому?

Пишу гру чомусь невдається вивести вікно гри при запуску одразу закривається неможу зрозуміти в чому проблема
ось код гри

import pygame, random, sys
from pygame.locals import*

ширина  = 600
висота  = 600
TEXTCOLOR = (0,0,0)
background = ('bg.png')
FPS = 60
BADDIEMINSIZE = 10
BADDIEMAXSIZE = 40
BADDIEMINSPEED = 1
BADDIEMAXSPEED = 8
ADDNEWBADDIERATE = 6
PLAYERMOVERATE = 5
x1 = 300
y1 = 550

def terminate():
    pygame.quit()
    sys.exit()

def waitForPlayerToPressKey(KESYDOWN=None, QUIT=None):
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                terminate()
            if event.type == pygame.KESYDOWN:
                if event.key == K_ESCAPE: #
                    terminate()
                return False

def plauerHasHitBaddie(plauerRect, baddise):
    for b in baddise:
        if plauerRect.colliderect(b['rect']):
            return True
        return False

def drawText (text, font, surface, x, y):
    textobj = font.render(text, 1, TEXTCOLOR)
    textrect = textobj.get_rect()
    textrect.topleft = (x, y)
    surface.blit(textobj, textrect)

# налаштування мишки і вікна
pygame.init()
win = pygame.display.set_mode((ширина, висота))
pygame.display.set_caption("швидкий")
pygame.mouse.set_visible(False)

# налаштування шрифту
#font = pygame.font.SysFont(35)

# звук в грі
pygame.mixer.music.load('background.mp3')
pygame.mixer.music.play(-1, 0.0)

# налаштування зображення
plauerImage = pygame.image.load('player2.png')
plauerRect = plauerImage.get_rect()
plauerImage = pygame.image.load('player.png')

2 Востаннє редагувалося ur_naz (21.12.2019 18:48:18)

Re: Вікно гри закривається автоматичнот чому?

а де в тебе mainloop?

Прихований текст

цю порнографію більш нікому не показуй, вчи WinAPI (то є дуже гарна школа), та ООП

3

Re: Вікно гри закривається автоматичнот чому?

ur_naz написав:

а де в тебе mainloop?

Прихований текст

цю порнографію більш нікому не показуй, вчи WinAPI (то є дуже гарна школа), та ООП

Нагадайте, будь ласка, які переваги надає WinAPI в Python

Подякували: leofun01, 0xDADA11C72

4

Re: Вікно гри закривається автоматичнот чому?

а яким тут mainloop в менеж є pygame цеж те саме
я в колиджі 3,5 місяці вчив Python такого як WinAPI  близько не вчили тому я безпонятя
якшо можете пркомендуйте літературу

5

Re: Вікно гри закривається автоматичнот чому?

Та не слухайте його, ur_naz вічно бурчить і обзивається. WinAPI на Python-і - це десь те саме, що інтеграли на шкільній фізиці, фізика без них не може, але вони в школі навряд чи допоможуть.
В консоль щось виводить?

6

Re: Вікно гри закривається автоматичнот чому?

я зрозумів чому в мене вікно закривалося одразу зробив цикл який виконується постійно програма уже не закривається але зіткнувс з іншою проблемою
ось шов виводить в консоль Traceback (most recent call last):
  File "C:/Users/Ліпов Богдан/Desktop/Курсова/спритник.py", line 78, in <module>
    if keys[pygame.K_LEFT] and x > 5:
TypeError: 'builtin_function_or_method' object is not subscriptable

це повязано з цим кодом

 # рух гравця
        keys = pygame.key.get_pressed
        if keys[pygame.K_LEFT] and x > 5:
            x -= speed
        if keys[pygame.K_RIGHT] and x < 555:
            x += speed
        if keys[pygame.K_UP] and y > 5:
            y -= speed
        if keys[pygame.K_DOWN] and y < 555:
            y += speed
import pygame, random, sys
from pygame.locals import*

ширина  = 600
висота  = 600
TEXTCOLOR = (0,0,0)
background = ('bg.png')
FPS = 60
BADDIEMINSIZE = 10
BADDIEMAXSIZE = 40
BADDIEMINSPEED = 1
BADDIEMAXSPEED = 8
ADDNEWBADDIERATE = 6
PLAYERMOVERATE = 5
x1 = 300
y1 = 550
speed = 5

def terminate():
    pygame.quit()
    sys.exit()

def waitForPlayerToPressKey(KESYDOWN=None, QUIT=None):
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                terminate()
            if event.type == pygame.KESYDOWN:
                if event.key == K_ESCAPE: #
                    terminate()
                return False

def plauerHasHitBaddie(plauerRect, baddise):
    for b in baddise:
        if plauerRect.colliderect(b['rect']):
            return True
        return False

def drawText (text, font, surface, x, y):
    textobj = font.render(text, 1, TEXTCOLOR)
    textrect = textobj.get_rect()
    textrect.topleft = (x, y)
    surface.blit(textobj, textrect)

# налаштування мишки і вікна
pygame.init()
win = pygame.display.set_mode((ширина, висота))
pygame.display.set_caption("швидкий")
pygame.mouse.set_visible(False)

# налащтування шрифту
#font = pygame.font.SysFont(35)

# звук в грі
pygame.mixer.music.load('background.mp3')
pygame.mixer.music.play(-1, 0.0)

# налаштування зображення
plauerImage = pygame.image.load('player2.png')
plauerRect = plauerImage.get_rect()
plauerImage = pygame.image.load('player.png')


topScore = 0
while True:
    # початок гри
    baddies = []
    score = 0
    plauerRect.topleft = (ширина/2, висота-50)
    moveLeft = moveRight = moveUp = moveDown = False
    reverseCheat = slowCheat = False
    baddiesAddCounter = 0

    while True:
        score += 1
        # рух гравця
        keys = pygame.key.get_pressed
        if keys[pygame.K_LEFT] and x > 5:
            x -= speed
        if keys[pygame.K_RIGHT] and x < 555:
            x += speed
        if keys[pygame.K_UP] and y > 5:
            y -= speed
        if keys[pygame.K_DOWN] and y < 555:
            y += speed

7 Востаннє редагувалося ur_naz (21.12.2019 21:19:28)

Re: Вікно гри закривається автоматичнот чому?

які ж в вас мізкі зазкорузлі... WinAPI є базова бібліотека Windows і є месдж-орієнтованою. і тому що В. найпоширеніша в світі  ОС з вбудованим графічним інтерфейсом, багато бібліотек написано як оболонки до WinAPI. Ці бібліотеки здебільшого копіювали  архітектуру WinAPI, бо як ділдо не наряджай, різдвяну ялинку з нього не зробиш. навіть якщо наліпити класів. Бо так влаштована В. Тож і пигейм і тикинтер і інші бібліотеки мають в тому чи іншому види мейнлуп де додаток приймає меседжі від вінди.
а ви ви тут порнографію розвели. От не соромно вам?

8

Re: Вікно гри закривається автоматичнот чому?

от ваша програма. нащо її запхали в функцію, яку навіть не визиваєте? про  останній варіант я вже мовчу...

 while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                terminate()
            if event.type == pygame.KESYDOWN:
                if event.key == K_ESCAPE: #
                    terminate()

9

Re: Вікно гри закривається автоматичнот чому?

ur_naz  попробуйте самі написати і подивіться чи у вас усе вийде боя дуже сумніваюся

10

Re: Вікно гри закривається автоматичнот чому?

lipov: keys = pygame.key.get_pressed - ви не викликаєте функцію, ви робите keys посиланням на неї. Додайте ().
ur_naz: WinAPI - низькорівнева бібліотека, до того ж платформозалежна. Python у будь-якому разі обгортає будь-який зовнішній виклик у купу свого коду, тому пряма робота з WinAPI буде дуже повільною. Працювати у Python треба з бібліотеками (найчастіше написаними на C/C++), які реалізують високорівневі абстракції з купою системних викликів за один вираз на Python. Ви не отримаєте жодної користі від прямих викликів WinAPI з Python у порівнянні з бібліотеками на кшталт pygame, а якщо врахувати, що pygame кросплатформений - то й поготів ваша порада більше схожа на шкідництво. Якщо, звичайно, ви не беретеся навчати людину C та WinAPI особисто. Це як сказати людині, що вчиться плавати в навчальному басейні з жилетом, що це фігня і треба одразу стрибати в Ніагару, щоб навчитися плавати.

Подякували: leofun011

11

Re: Вікно гри закривається автоматичнот чому?

а мені набридло, що ви не розумієте такі прості речі, пишете маячню, ще зверхньо та упереджено до мене ставитесь і ображаєте. тобто п. 2.4 ви вже не один раз порушували. і ви жодного виправдання не знайдете, а й вже свою позицію пояснив. ба більше, мені набридло, коли допомагають невдахам вирішувати олімпіадні завдання. бо є велика різниця між учбовим завданням і олімпіадним. Чі це так важко зрозуміти?

а тепер по темі
нащо ви останнє повідомлення написали? я вже відповідь дал, чому не працює, і що зробити треба, щоб запрацювало. Якщо вам і досі не зрозуміло. вмикайте впн і ідіть в Ґуґл і переконайтесь, що я правий. Доречі на форуми йти то остання справа.

"пряма робота з WinAPI буде дуже повільною"  дуже повеселило, бо всі обгортки над вінапі не можуть працювати швидше. дуже дивно прочитати таке від досвідченого програміста. Так і будете по чайній ложці своїм досвідом ділитися?

Отаке інвалідство є наша система освіти. І хто там її захищає? Юнацтво воно дурне, а але хватає шаблю і лізе у бій, замість взяти книгу і прочитати, як ту шаблю в руках тримати.

А потім вони не вміють навіть порівняти дві бібліотеки і знати схожі парадигми.

І на останок, не треба нікого вчити сі. Лише один урок, і не важливо, чи то сі, чи паскаль, чи бейсік. Принципи не залежать від мови.. Ой, авжеж, де ж там українською написано? все ж англіцькою незрозуміло або кацапською некошерно.

Ще раз якщо ви не зрозумієте фундаментальні основи, далі не підете. Перед тим як писати "гру", треба поцікавитися як працює бібліотека, яку ви вирішили використовувати. до усіх популярних мов і бібліотек є туторіали, де все розжовано. не треба при першій невдачі бігти на форум, вам не 3 роки.

12

Re: Вікно гри закривається автоматичнот чому?

WinAPI є базова бібліотека Windows і є месдж-орієнтованою. і тому що В. найпоширеніша в світі  ОС з вбудованим графічним інтерфейсом,

Android вже найпоширеніша в світі ОС з вбудованим графічним інтерфейсом.

Подякували: koala1

13 Востаннє редагувалося ur_naz (22.12.2019 01:10:53)

Re: Вікно гри закривається автоматичнот чому?

ключове слово "вбудованим "  =) концептуально WinAPI від X11 нічим не відрізняється. я не спеціаліст з андроіду. але мені важко уявити що, там якась інша вундервафля

14

Re: Вікно гри закривається автоматичнот чому?

ur_naz ос таку я гру намагаюся реалізувати але щось не працює тепер питайте тих хто написав книгу як вони це реалізовували
і та я в гугл уже не одну гру знаходив реалізовану таким способом
а тепер хочте можу скину фто кожної сторінки з кодом і поясненням до коду 
https://books.google.com.ua/books?id=tr … mp;f=false
а тепер поясніть як таке можливо книга пише так
можливо для когось прості речі але як я казав скоріше я тільки один рік провчився і багато чого ще в програмуванні не розумію

15 Востаннє редагувалося ur_naz (22.12.2019 01:48:35)

Re: Вікно гри закривається автоматичнот чому?

а ти не бачиш різницю? в книзі написане саме те. на що я тебе підбурюю. Є цикл і є івенти, а повідомлення тобі не показують, бо нащо. створив вікно і поки цикл крутиться, вікно не закриється, якщо помилок немає.
а нащо ти все до гори дригом перевернув?  в тебе є івент кейпресд. на кожний кей можеш хоч цілу конституцію написати в окремій функції відклику. Що таке функції відклику не треба поясняти?
от тут написано як правильно користуватись pygame.key.get_pressed() https://nerdparadise.com/programming/pygame/part6

Велика порада, до всього, що ти читаєш у книжках, або і особливо на форумі від "вумних" дядьок, відносся зі здоровою долею скепсісу. бо дядки може й не такі "вумні", а книжки пишуть ті ж дядки, тільки з більшими бородами

Подякували: leofun011

16

Re: Вікно гри закривається автоматичнот чому?

ur_naz написав:

концептуально WinAPI від X11 нічим не відрізняється

Та ну прямо. Якби ви ще сказали "графічна підсистема WinAPI від сервера X11" - можна було б і заплющити очі. А так - ви хоч по одному графічному застосунку на обох платформах зробили? Чи це чисто теоретичне уявлення, яке ви з лайкою і захмарною впевненістю у власній правоті нав'язуєте новачкам?

17

Re: Вікно гри закривається автоматичнот чому?

а ви порівняйте програму з мінімальним віконним інтерфейсом на WinAPI і Х11