Cum să programaţi jocurile p python folsond biblioteca pigame

Acest articol este destinat celor care Sunt deja fajiariariaţi cu lipba de programare python şi vă mipuls să citiţi biblioteca pygame pentru aceara. CA Exemplu Vizual, AICI EST PREZENTAT UN procesi Siici de Programi program jcuriloror, în Care Jucătorul Trebuie să Doneze de la Bile de sărituri.

Pasi

Agea 1 DIN 8:
Instalarea Pygame
un. Descărcaţi Pygame. Urmaţi Linkul şi Găsiţi Versiunea Bibliotecii Potrivită pentru platforma DVS .: http: // Pygame.Org / descărcare.Shtml .
  • 2. Rulaţi instalatorul.
  • 3. Asiguraţi-Vă Că Instalalarea SA Terminat Cu uspješno. Deschideţi terminal python. Uvoditeţi "Invespoţi Pygame". Dacă Nu Apoar Mesaje de Eroare, atuncija Pygame Fost Instatat Cu uspješno.
    Invespoţi Pygame
  • Atea 2 DIN 8:
    Crearea Unei Ferestre Principe de Joc
    un. Creaţi un fişier nou.
  • 2. Invespoţi Pygame. Pygame este o Bibliotecă Care Acceurează accesul la funcţiil grafice de programare de programare python. Dacă doriţi să aflaţi mai Multi Despr Modul în Care Funcţionează aceste Funcţii, Informaţiile Sunt Disponibile Pygame. https: // Pygame.Org / docs /
    Invespoţi Pygamefrom Pygame.O LocalnicII uvoz *
  • 3. Specifistaţi dimensiunea freestrei jocului. Creaţi o Variabilă Globală pentruunile aerestrelor pentru a vă regresi la acestea din dimrite părţi ale joclui. Pentru komorati, aceşti parametri sunt mai bine să specifikacija la începtil fişeirului, astfel încât, dacă este necesesar, frost mai uşor schimbeu îirbeu. Pentru proecte mai kompleks, va fi de preference să se facă astfel de datum înttr-un fişier separata.
    Rezoluţie = (400.300)
  • 4. Određen Mai Multe Culori. Culorile Din Pygame Sunt Definitis în format rgba variinnd de la 0 la 255. Valoaarea Alfa (a) Poete fi omišă, Dar Restul Culoriljoor (Roşu, Verde şi Albastru) Sunt Necesare pentru umplere.
    Alb = (255,255,255) negru = (0.0.0) roşu = (255,0,0)
  • Cinci. Iniţializaţi Ecranul glavnica. Utilizaţi Variabila de Rezoluţie deficie desreme.
    ECRAN = Pygame.Afişa.Set_mode (rezoluţie)
  • 6. Creaţi Un Ciclu al Jocului. Setaţi RepetarArea Anumitor Acţiuni în feecare cadu al joclui. Creaţi Un Ciclu Care va Efectu în mod konstantno za toide aceste acţiuni.
    În Timp CE este adevărat:
  • 7. Determinaţi culoarea umplerii ecranului.
    Ecran.Umpleţi (alb)
  • Odlučiti. Afişaţi eCranlul. Dacăriţi programul în aceara etapă, ecranul este Vprit Cu Alb, Iar Apoi Kubul va i OPri Situaţia de Urgenţă. Cauza eşecului va fi că sistemul de operari Trit AUREMETELE PUTULUI, IAR HOUSELUL PUR ŞI SUBLE NU POSTOCEAZA. CLAND PROGRAM ABUMULEAZA PREA MULTE AUTMEMENTE NETRATATE, PPARE EşECUL.
    În Timp CE este adevărat:...Pygame.Afişa.Flip ()
  • nouă. Implementacija Prelucrearea Evementator. Obţeineţi o liste cu za toide ientimente skrbi au apărut între cadrele de desen. În Exemplul nosru Trebuie să vă îngrijoraţi Procesarea unui singur je nacrt deeşire (Quit). Chare când utilizatorul încid fereastra jocului. Procesaarea Eveimentului va împiedica eşecul programuluui de la apariţia PRAY MUTORYMENTE.
    În Timp CE este adevărat:...Pentru i în pygame.Ekument.Obţineţi (): Dacă Eveimentul.Tip == Quit: Pygame.Părăsi ()
  • Zamislite intitulată programampygamepart1.jpg
    10. Încercaţi programu! Acum codul programului ar Trebui să astfel:
    Invespoţi Pygamefrom Pygame.O Lokalnici uvoz * Rezoluţie = (400.300) bijela = (255,255,255) crna = (0,0,0) crvena = (255,0,0,0) ECRAN = Pygame.Afişa.Set_mode (rezoluţie) în thip CE este adevărat: ecran.Umpleţi (Alb) Pygame.Afişa.Flip () pentruentiment în pygame.Ekument.Obţineţi (): Dacă Eveimentul.Tip == Quit: Pygame.Părăsi ()
  • Parea 3 DIN 8:
    CreaArea Obicelo de Joc
    un. Creaţi o Nouă Clasă de Obiete şi Desearul Său. Setaţi za toide proprietăţile obistluui. Defiţi, de asemenea, valorilni implicitni pentru feecare dintre proprietietţţi.
    Ball Ball: Def __init __ (Self, XPOS = Rezoluţie [0] / 2, ypos = rezoluţie [1] / 2, xvel = 1, yvel = 1, RAD = 15): sine.x = xposself.Y = yosself.Dx = xvallf.dy = yveself.Radijus = sam.Tip = "Zveckanje"
  • 2. Deternaţi desenul obisului. Utilizaţi proprietăţile obistului specifikat în građevinarstvo pentru portreca mingea ca un cerc de pe supraţaţa transmisă funcţiei la funcţie. Suprafaţa va fi ecranul PE Care l-Aţi kreativ mai razrrem prinfirea dimensiunilor prodaju.
    Def TRAGE (Sine, Suprafaţă): Pygame.Desena.CERC (Suprafaţă, Negru, (sine.X, sinus.y) sine.Razred
  • 3. Creaţi o Instanţă de Clasă.
    Ball = Ball () în timp CE este adevărat:...Zveckanje.Desenaţi (ecran)
  • 4. Lice Ca Obistul Să se mişte. Creaţi o Funcţie Care Actualizează Poziţia Obisului. Apelaţi această caracteristica în feicare iteraţie ciclului.
    CLASA BALL:...Def ažurirati (sine): sinus.X + = sine.Dx.Y + = sine.Dy
  • Cinci. LimitAţi frecvenţa caddrului. Mingea se va vrbi pjenastog ponavljanja, deoarece Ciclul de Joc este Repetat de Ori PE Seundă. Utilizaţi Timerul Pygame pentru limita frečvenţa dechimbare a cadluului la 60 fps.
    • CEAS = Pygame.Timp.CEAS () în Timp CE este adevărat:...Ceas.Označite (60)
  • Păstraţi Un Castron PE ECRAN. Adăugaţi Verfificări La Funcţia Actualiža Stija Pentru A Schimba Direcţia de Mişcare A MingII, Dacă ajunge la Limicele Ecranului.
      CLASA BALL:...Def Actualizare (sine):...Dacă (de sine.X <= 0 or self.x >= Rezoluţie [0]): sine.Dx * = -1If (sine.Yor <= 0 or self.y >= Rezoluţie [1]): sine.dy * = -1
  • Încercaţi programu! Acum codul programului ar Trebui să astfel:
    Zamislite intitulată programampygamepart2.jpg
      Invespoţi Pygamefrom Pygame.O Lokalnici uvoz * Rezoluţie = (400.300) bijela = (255,255,255) crna = (0,0,0) crvena = (255,0,0,0) ECRAN = Pygame.Afişa.Set_mode (Rezoluţie) Ball Ball: Def __init __ (Jas, XPOS = Rezoluţie [0] / 2, ypos = rezoluţie [1] / 2, xvel = 1, yver = 1, rad = 15): sine.x = xposself.Y = yosself.Dx = xvallf.dy = yveself.Radijus = sam.Tip = "Zveckanje"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.CERC (Suprafaţă, Negru, (sine.X, sinus.y) sine.Radijus) Def Actualizare: sinus.X + = sine.Dx.Y + = sine.Dyif (sine.X <= 0 or self.x >= Rezoluţie [0]): sine.Dx * = -1If (sine.Yor <= 0 or self.y >= Rezoluţie [1]): sine.Dy * = -llball = minge () CAS = Pygame.Timp.CEAS () în Timp CE este adevărat: ecran.Mingee Dembere (Alb).Remiză (ecran) mingea.Actualizaţi () Pygame.Afişa.Flip () ceas.Bifaţi (60) pentruentiment în pygame.Ekument.Obţineţi (): Dacă Eveimentul.Tip == Quit: Pygame.Părăsi ()
  • Parea 4 DIN 8:
    Struktureaaa Jocurilor
    un. Utilizaţi clase de strukturare. În Viitor, kompleks Jocul VA Deveni Mai. Utilizaţi Tehnici de programare orijentacija p PEBEESTE PENTU A struktura.
  • 2. Conversia ciclului de joc în clasă. Din trenutak CE Jocul uključuju Deja Datum, Inclusiv Obiee şi Funcţii de Joc, este logika să înlocuiţi ciclul de joc în clasă.
    Joc de Clasă ():
  • 3. Adăugaţi dizajnerul. Cu aceara, vă refuzaţi mai multeliute folit în joc, creaţi un ecran, cronometru şi iniţializaţi pygame. Pygame Trebuie iniţializată pentru utiliza în continuare astfel de capabilităţi cax tekst sau suet.
    Joc de Clasă (): Def __init __ (sine): pygame.U Sinea Lui.ECRAN = Pygame.Afişa.Set_mode (rezoluţie) sinus.CEAS = Pygame.Timp.CEAS ()
  • 4. Setaţi Prelucrearea Cumentelor în Funcţie.
    Joc de Clasă ():...Def galerievents (sine): pentru i în pygame.Ekument.Obţineţi (): Dacă Eveimentul.Tip == Quit: Pygame.Părăsi ()
  • Cinci. Faceţi Un Ciclu de joc cu o funk fencţie. Funcţia de ProcuSare A Certimentului Apelurilor în Feicare Iteraţie Ciclului.
    Joc de Clasă ():...Def trčanje (sinus): în thip che este adevărat: sinus.Gândiţi-vă () de sine.Ecran.Umpleţi (alb) de sine.Ceas.Označite (60) pygame.Afişa.Flip ()
  • 6. Setaţi Prelucrarea Obitelor Višestruki de Thoc. În acest stadiu, codul de joc deterină o aktualizirati şi redredire Obiedelor Individene în feecare cadru. Cu această aberdrare, codul joclui va fi de fi de fi de fi de fi de-de volumes şi dezordonat, mai aletes dacă postoji munte în joc. Este mai înţelept să adăugaţi mai întâi Obiede întrija-O Matice, Apoi Să Actualizaţi şi Să Reportuceţi Zaljev Obicare Din Maticea La Fiecare iteraţie. Acum puteţi lice cu uşurinţă un oboriti nou în joc şi determinacija o altă pobiţie de pornire pentru aceara.
    Joc de Clasă (): Def __init __ (Auto):...Desine.GameObjects = [] sine.GameObjects.Apend (ginge ()).GameObjects.Apend (Mingea (100))...Def trčanje (sinus): în thip che este adevărat: sinus.Galerievents () pentru GameBj în sinus.GameObjects: GameBj.Actualizaţi () sine.Ecran.Umple (alb) pentru Gamebj în sinus.GameObjects: GameBj.Tragove.Ecraan) de sine.Ceas.Označite (60) pygame.Afişa.Flip ()
  • Zamislite intitulată programampygamepart3.jpg
    7. Încercaţi programu! Acum codul programului ar Trebui să astfel:
    Invespoţi Pygamefrom Pygame.O Lokalnici uvoz * Rezoluţie = (400.300) bijela = (255,255,255) crna = (0,0,0) crvena = (255,0,0,0) ECRAN = Pygame.Afişa.Set_mode (Rezoluţie) Ball Ball: Def __init __ (Jas, XPOS = Rezoluţie [0] / 2, ypos = rezoluţie [1] / 2, xvel = 1, yver = 1, rad = 15): sine.x = xposself.Y = yosself.Dx = xvallf.dy = yveself.Radijus = sam.Tip = "Zveckanje"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.CERC (Suprafaţă, Negru, (sine.X, sinus.y) sine.Radijus) Def Actualizare: sinus.X + = sine.Dx.Y + = sine.Dyif (sine.X <= 0 or self.x >= Rezoluţie [0]): sine.Dx * = -1If (sine.y <= 0 or self.y >= Rezoluţie [1]): sine.Dy * = -1class joc (): def __init __ (sine): pygame.U Sinea Lui.ECRAN = Pygame.Afişa.Set_mode (rezoluţie) sinus.CEAS = Pygame.Timp.Ceas () sine.GameObjects = [] sine.GameObjects.Apend (ginge ()).GameObjects.APPACT (BALL (100)) Def Galerivent (sinus): pentrueniment în pygame.Ekument.Obţineţi (): Dacă Eveimentul.Tip == Quit: Pygame.Quit () Def Trčanje (sine): în thip CE este adevărat: de sine.Galerievents () pentru GameBj în sinus.GameObjects: GameBj.Actualizaţi () sine.Ecran.Umple (alb) pentru Gamebj în sinus.GameObjects: GameBj.Tragove.Ecraan) de sine.Ceas.Označite (60) pygame.Afişa.Flip () joc ().Upoznati se ()
  • Atea 5 DIN 8:
    Adăugarea unui osmjeti "igrača"
    un. Creaţi o Clasă de Jucători şi Desearul Său. Trebuie să Creaţi Un alt cecc kontrola de mişcarea miš-ului. Iniţializaţi parametrii săi în dizajner. Singura Valoare važna va fi raza.
    Igrač de Clasă: def __init __ (self, rad = 20): sinus.X = 0.Y = 0.Raza = rad
  • 2. Deternaţi desenul obisului jucătorului. Este desenat în mod slične skrbi au desenate Alte Obiete de Joc.
    Igrač de Clasă:...Def TRAGE (Sine, Suprafaţă): Pygame.Desena.Cecc (suprafaţă, roşu, (sine.X, sinus.y) sine.Razred
  • 3. Adăugaţi contro Control Mouse-Ului pentru obistrul playerlului. În feecare cadru al joclui, trebuie să verificaţi poziţia indikatolului miš-ului şi să relaţionaţi pobiţia obisului jucătorului cu acest punct.
    Igrač de Clasă:...Def ažurirati: kabel = pygame.Miš.get_pos () de sine.X = cablu [0] sine.Y = kabel [1]
  • 4. Adăugaţi obiestel jucătorului la maticea GameBobjects. Creaţi o Nouă Instanţă Obietului şi adăugaţi-o în Lista GameBobjects.
    Joc de Clasă (): Def __init __ (Auto):...Desine.GameObjects.Adăugaţi (jucător ())
  • Zamislite intitulată programampygamepart4.jpg
    Cinci. Încercaţi programu! Acum codul programului ar Trebui să astfel:
    Invespoţi Pygamefrom Pygame.O Lokalnici uvoz * Rezoluţie = (400.300) bijela = (255,255,255) crna = (0,0,0) crvena = (255,0,0,0) ECRAN = Pygame.Afişa.Set_mode (Rezoluţie) Ball Ball: Def __init __ (Jas, XPOS = Rezoluţie [0] / 2, ypos = rezoluţie [1] / 2, xvel = 1, yver = 1, rad = 15): sine.x = xposself.Y = yosself.Dx = xvallf.dy = yveself.Radijus = sam.Tip = "Zveckanje"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.CERC (Suprafaţă, Negru, (sine.X, sinus.y) sine.Radijus) Def Actualizare: sinus.X + = sine.Dx.Y + = sine.Dyif (sine.X <= 0 or self.x >= Rezoluţie [0]): sine.Dx * = -1If (sine.y <= 0 or self.y >= Rezoluţie [1]): sine.Dy * = -1class igrač: def __init __ (sine, rad = 20): sinus.X = 0.Y = 0.Radijus = sam.Tip = "Jucător"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.Cecc (suprafaţă, roşu, (sine.X, sinus.y) sine.Radijus) Def Ažuriranje (sine): kabel = pygame.Miš.get_pos () de sine.X = cablu [0] sine.Y = kabel [1] joc de clasă (): def __init __ (sine): pygame.U Sinea Lui.ECRAN = Pygame.Afişa.Set_mode (rezoluţie) sinus.CEAS = Pygame.Timp.Ceas () sine.GameObjects = [] sine.GameObjects.Adăugaţi (jucător ()).GameObjects.Apend (ginge ()).GameObjects.APPACT (BALL (100)) Def Galerivent (sinus): pentrueniment în pygame.Ekument.Obţineţi (): Dacă Eveimentul.Tip == Quit: Pygame.Quit () Def Trčanje (sine): în thip CE este adevărat: de sine.Galerievents () pentru GameBj în sinus.GameObjects: GameBj.Actualizaţi () sine.Ecran.Umple (alb) pentru Gamebj în sinus.GameObjects: GameBj.Tragove.Ecraan) de sine.Ceas.Označite (60) pygame.Afişa.Flip () joc ().Upoznati se ()
  • Atea 6 DIN 8:
    Crearea Interacţiunii Obisului
    un. Schimbaţi Funcţiile de aktualizirati Poziţiei. Pentru apleme interaţiunea Obicetelor, este necesar să le le furnizaţi accusul la Reci Reci Recitroc. Adăugaţi un nou parametru în Funcţia de Actualizare Pentru A transfera Datoteka Listei GameBobjects. Parametrul trebuie adăugat la clasele şi funcţiile cu žuč. Dacă aveţi o Mulţime de Clase, Moştenirea va ajuta la salvarea listei de parametar la fel.
    CLASA BALL:...Def ažurirati (self, GameBobjects):...Igrač de Clasă:...Def ažurirati (self, GameBobjects):
  • 2. CONVERTESI CEKURI DE COLIZIUNE JUCORULULUI CU ŽILE. Vedeţi toite obeesele şi defiţi-le printre ele caren se reference la žuč. APOI, Folosind Radiaţiile Obicetelor şi Formula Pentru Detrinarea DISTANŽEI, Vericaţi Dacă Obicele S-au Ciocnit Unicul Cu Celălalt. Verificaţi Coliziunile Dintre Cercuri este Uşor. Acesta este motivul ravnatelj că, cA Exemplu în acest joc, Cifrele Unei Alte Forme Nu Sunttizate.
    Igrač de Clasă:...Def ažurirati (self, GameBobjects):...Pentru GameBj în GameObjects: Dacă GameBj.Tip == "Zveckanje": Dacă (GameBj.Sitan.x) ** 2 + (GameBj.Vine.y) ** 2 <= (gameObj.radius + self.radius)**2:
  • Zamislite intiturită programampygamepart5.jpg
    3. Stabiliţi Sfârşitul jocului atuncija când un jucător colizyune cu o meinga. În Acest Stadiu, PUR Şi Simpu Puneţi Calea deeşire Din Joc.
    Dacă (GameBj.Sitan.x) ** 2 + (GameBj.Vine.y) ** 2 <= (gameObj.radius + self.radius)**2:pygame.quit()
  • 4. Încercaţi programu! Acum codul programului ar Trebui să astfel:
    Invespoţi Pygamefrom Pygame.Mještani uvoz * Rezolution = (400, 300) alb = (255,255,255) negru = (0,0,0,0) Red = (255,0,0,0,0) ECR = Pygame.Afişa.Set_mode (Rezoluţie) Ball Ball: Def __init __ (Jas, XPOS = Rezoluţie [0] / 2, ypos = rezoluţie [1] / 2, xvel = 1, yver = 1, rad = 15): sine.x = xposself.Y = yosself.Dx = xvallf.dy = yveself.Radijus = sam.Tip = "Zveckanje"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.CERC (Suprafaţă, Negru, (sine.X, sinus.y) sine.Radijus) def ažurirati (self, GameObjects): sinus.X + = sine.Dx.Y + = sine.Dyif (sine.X <= 0 or self.x >= Rezoluţie [0]): sine.Dx * = -1If (sine.Yor <= 0 or self.y >= Rezoluţie [1]): sine.Dy * = -1class igrač: def __init __ (sine, rad = 20): sinus.X = 0.Y = 0.Radijus = sam.Tip = "Jucător"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.Cecc (suprafaţă, roşu, (sine.X, sinus.y) sine.Radijus) Def Ažuriranje (self, GameObjects): Kabel = Pygame.Miš.get_pos () de sine.X = cablu [0] sine.Y = kabel [1] pentru GameBj în GameObjects: Dacă GameBj.Tip == "Zveckanje": Dacă (GameBj.Sitan.x) ** 2 + (GameBj.Vine.y) ** 2 <= (gameObj.radius + self.radius)**2:pygame.quit()class game():def __init__(self):pygame.init()self.screen = pygame.display.set_mode(resolution)self.clock = pygame.time.Clock()self.gameObjects = []self.gameObjects.append(Player())self.gameObjects.append(Ball())self.gameObjects.append(Ball(100))def handleEvents(self):for event in pygame.event.get():if event.type == QUIT:pygame.quit()def run(self):while True:self.handleEvents()for gameObj in self.gameObjects:gameObj.update(self.gameObjects)self.screen.fill(white)for gameObj in self.gameObjects:gameObj.draw(self.screen)self.clock.tick(60)pygame.display.flip()game().run()
  • Agea 7 DIN 8:
    Adăugarea unui kontroler de jocuri pentru crea gattle
    un. Creaţi o Clasă de kontroler de Jocuri. Controlrele de Joc Sunt Responsile pentru cursul joclui. Ei Nu Coincid Cu Clasa Jocului. Kontrolul va aăuga periodic o nouă ruga p pe peku ecran şi va compacplice jocul. Adăugaţi dizajnerul şi iniţializaţi Unele valori de pornore. Intervalul VA înSemna Timpul Prin Care VA fi fi a adăugată o nouaă.
    CLASA GameController: Def __init __ (self, interval = 5): sinus.Inter = interval de interval.Apoi = Pygame.Timp.get_ticks () + (2 * 1000) de sine.Tip = "Kontrolor de joc"
  • 2. Adăugaţi Funcţia de aktualizira. Acesta va verifica cât denter trecut timpul de la adăugarea menzii anterijere sau de la începulul joclui. Dacă Timpul depăşeşte intervalul korisnika specifikata, cronometrul va fi resetat şi noua minge frost adăugată.
    CLASA GameController:...Def Update: Dacă este de sine.Următorul < pygame.time.get_ticks():self.next = pygame.time.get_ticks() + (self.inter * 1000)gameObjects.append(Ball())
  • 3. Montaţi viteze aleatorii pentru žuč. Pentru lica ca jocul să se comporte diferite, este necesar să le limiteţi să utizoze numere aleatorii pentru paramatlul de viteză. Acum, Viteza Bilelor Va fi odredi, de UN NUMZR Zecimal Ploter, NU NUMăR îNTREG.
    CLASA GameController:...Def Update: Dacă este de sine.Următorul < pygame.time.get_ticks():self.next = pygame.time.get_ticks() + (self.inter * 1000)gameObjects.append(Ball(xVel=random()*2, yVel=random()*2))
  • 4. Corectaţi caracteristica desenului. Funcţia de Tragere Nu Funcţionează cu punct şi virgulă plutitoare (Plotor). Prin Urmare, este Necesar Să se exprime Poziţia Mingelor în Numere întregi îNtregi.
    CLASA BALL:...Def TRAGE (Sine, Suprafaţă): Pygame.Desena.Cecc (suprafaţă, negru, (int (de sine.x), int (sine.y)), sine.Razred
  • Cinci. DeterInaţi Metoda de Desen pentru kontrolul de jocuri. Deoarece acesta este, de asemenea, UN pomesti de joc, îclul ravnatelj al joclui va fi o încercare de ao tage. Prin Urmare, pentru kontrolor, este necesar să se određuje Funcţia de Desen, Care Nu Face Nimic pentru a Evita eşecul Jocului.
    CLASA GameController:...Def TRAGE (sine, ecran): trece
  • 6. Adăugaţi UN kontroler de joc în GameObjects şi eliminiţi 2 žuč. Jocul Trebuie să adauge o meinge nouă la fecare 5 Secunde.
    Joc de Clasă (): Def __init __ (Auto):...Desine.GameObjects = [] sine.GameObjects.Anksi (gamecontroller ()) sinus.GameObjects.Adăugaţi (jucător ())
  • Zamislite intitulată programampygamepart6.jpg
    7. Încercaţi programu! Acum codul programului ar Trebui să astfel:
    Uvoz Pygamefrom uvoz aleator Randomfrom Pygame.O Lokalnici uvoz * Rezoluţie = (400.300) bijela = (255,255,255) crna = (0,0,0) crvena = (255,0,0,0) ECRAN = Pygame.Afişa.Set_mode (Rezoluţie) Ball Ball: Def __init __ (Jas, XPOS = Rezoluţie [0] / 2, ypos = rezoluţie [1] / 2, xvel = 1, yver = 1, rad = 15): sine.x = xposself.Y = yosself.Dx = xvallf.dy = yveself.Radijus = sam.Tip = "Zveckanje"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.Cecc (suprafaţă, negru, (int (de sine.x), int (sine.y)), sine.Radijus) def ažurirati (self, GameObjects): sinus.X + = sine.Dx.Y + = sine.Dyif (sine.X <= 0 or self.x >= Rezoluţie [0]): sine.Dx * = -1If (sine.y <= 0 or self.y >= Rezoluţie [1]): sine.Dy * = -1class igrač: def __init __ (sine, rad = 20): sinus.X = 0.Y = 0.Radijus = sam.Tip = "Jucător"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.Cecc (suprafaţă, roşu, (sine.X, sinus.y) sine.Radijus) Def Ažuriranje (self, GameObjects): Kabel = Pygame.Miš.get_pos () de sine.X = cablu [0] sine.Y = kabel [1] pentru GameBj în GameObjects: Dacă GameBj.Tip == "Zveckanje": Dacă (GameBj.Sitan.x) ** 2 + (GameBj.Vine.y) ** 2 <= (gameObj.radius + self.radius)**2:pygame.quit()class GameController:def __init__(self, interval = 5):self.inter = intervalself.next = pygame.time.get_ticks() + (2 * 1000)self.type = "game controller"def update(self, gameObjects):if self.next < pygame.time.get_ticks():self.next = pygame.time.get_ticks() + (self.inter * 1000)gameObjects.append(Ball(xVel=random()*2, yVel=random()*2))def draw(self, screen):passclass game():def __init__(self):pygame.init()self.screen = pygame.display.set_mode(resolution)self.clock = pygame.time.Clock()self.gameObjects = []self.gameObjects.append(GameController())self.gameObjects.append(Player())def handleEvents(self):for event in pygame.event.get():if event.type == QUIT:pygame.quit()def run(self):while True:self.handleEvents()for gameObj in self.gameObjects:gameObj.update(self.gameObjects)self.screen.fill(white)for gameObj in self.gameObjects:gameObj.draw(self.screen)self.clock.tick(60)pygame.display.flip()game().run()
  • Atea 8 DIN 8:
    Adăugarea unui nastavak şi finanzare jocului
    un. Adăugaţi Ugovor Uprave La Clasla Corelerului de Jocuri. Creaţi Un obod de Clasă de fonturi şi Un Scort Variabil. Obistul de fonturi trebuie să laka tras în feecare cadlu pentru a afişa contul kurac şi o măreşte în feecare cadunci când.
    CLASA GameController: Def __init __ (Jastvo, interval = 5):...Desine.Scort = 0isess.Recoreption = Pygame.Fonta.Font (NicI Uniul, 12) Def Update (Self, GameObjects):...Desine.Scord + = 1Def Draw (Self, ECRAN): ECRAN.Blit (sine.Sreo.(Str (sine.Scort), True, Negru), (5,5))
  • 2. Schimbaţi PROCESUL DE dovršiti Jocului. Îndepărtaţi o cale simpă din joc atuncija când o colizyune a jucătorului cu o. În Schimb, Creaţi o Variabilă în Clasa Jucătorului, Care VA Fi Verificată Prin REDARE. Când Variabila de GameOver Devine Adevărată, Trebuie Să Opriţi Actualizarea Obicielector. Zoite în, astfel încât jucătorul va fi capabil să înţeleagă ce întâmplat şi va vedea contul său. Obisele vor fi achişate PE ECRAN, DAR VOR ONCETA PUR ŞI.
    CLASA Player: Def __init __ (Jastvo, Rad = 20):...Desine.GameOver = Ažuriranje Falsedef (self, GameObjects):...Pentru GameBj în GameObjects: Dacă GameBj.Tip == "Zveckanje": Dacă (GameBj.Sitan.x) ** 2 + (GameBj.Vine.y) ** 2 <= (gameObj.radius + self.radius)**2:self.gameOver = Trueclass game():def __init__(self):...self.gameOver = Falsedef run(self):while True:self.handleEvents()if not self.gameOver:for gameObj in self.gameObjects:gameObj.update(self.gameObjects)if gameObj.type == "player":self.gameOver = gameObj.gameOver
  • Zamislite intitulată programampygameFinal.jpg
    3. Încercaţi programu! Codul Final Al programului ar Trebui să arate astfel:
    Uvoz Pygamefrom uvoz aleator Randomfrom Pygame.O Lokalnici uvoz * Rezoluţie = (400.300) bijela = (255,255,255) crna = (0,0,0) crvena = (255,0,0,0) ECRAN = Pygame.Afişa.Set_mode (Rezoluţie) Ball Ball: Def __init __ (Jas, XPOS = Rezoluţie [0] / 2, ypos = rezoluţie [1] / 2, xvel = 1, yver = 1, rad = 15): sine.x = xposself.Y = yosself.Dx = xvallf.dy = yveself.Radijus = sam.Tip = "Zveckanje"Def TRAGE (Sine, Suprafaţă): Pygame.Desena.Cecc (suprafaţă, negru, (int (de sine.x), int (sine.y)), sine.Radijus) def ažurirati (self, GameObjects): sinus.X + = sine.Dx.Y + = sine.Dyif (sine.X <= 0 or self.x >= Rezoluţie [0]): sine.Dx * = -1If (sine.y <= 0 or self.y >= Rezoluţie [1]): sine.Dy * = -1class igrač: def __init __ (sine, rad = 20): sinus.X = 0.Y = 0.Radijus = sam.Tip = "Jucător"Desine.GameOver = FalseDef Draw (Self, Suprafata): Pygame.Desena.Cecc (suprafaţă, roşu, (sine.X, sinus.y) sine.Radijus) Def Ažuriranje (self, GameObjects): Kabel = Pygame.Miš.get_pos () de sine.X = cablu [0] sine.Y = kabel [1] pentru GameBj în GameObjects: Dacă GameBj.Tip == "Zveckanje": Dacă (GameBj.Sitan.x) ** 2 + (GameBj.Vine.y) ** 2 <= (gameObj.radius + self.radius)**2:self.gameOver = Trueclass GameController:def __init__(self, interval = 5):self.inter = intervalself.next = pygame.time.get_ticks() + (2 * 1000)self.type = "game controller"self.score = 0self.scoreText = pygame.font.Font(None, 12)def update(self, gameObjects):if self.next < pygame.time.get_ticks():self.next = pygame.time.get_ticks() + (self.inter * 1000)gameObjects.append(Ball(xVel=random()*2, yVel=random()*2))self.score += 1def draw(self, screen):screen.blit(self.scoreText.render(str(self.score), True, black), (5,5))class game():def __init__(self):pygame.init()self.screen = pygame.display.set_mode(resolution)self.clock = pygame.time.Clock()self.gameObjects = []self.gameObjects.append(GameController())self.gameObjects.append(Player())self.gameOver = Falsedef handleEvents(self):for event in pygame.event.get():if event.type == QUIT:pygame.quit()def run(self):while True:self.handleEvents()if not self.gameOver:for gameObj in self.gameObjects:gameObj.update(self.gameObjects)if gameObj.type == "player":self.gameOver = gameObj.gameOverself.screen.fill(white)for gameObj in self.gameObjects:gameObj.draw(self.screen)self.clock.tick(60)pygame.display.flip()game().run()
  • Slične publikacije