maanantai 23. syyskuuta 2019

TYHJÄ PAPERI KERTOO. Osa 1006. Yksinkertaista peliohjelmointia, kiitos

En ole koskaan ollut kiinnostunut, en ainakaan myönnä, kovin paljon peliohjelmoinnista. Se on tuntunut liian vaikealta ja haastavalta. Pikkupelien tekeminen on sen sijaan ollut kivaa. Sitten päätin että opettelen vähän enemmän, tavalla tai toisella. Ja sillä tiellä olen. Vielä en ole päässyt kovin pitkälle. Edes alkuun...

Olen aina ollut hulluna peleihin, mutta en niinkään tietokone- tai konsolipeleihin, perinteisiin peleihin ja leikkeihin vain. Enkä ole edes montaa kertaa ottanut pelikonsolia käsiini. Yksi syy siihen on ilmeinen: pelien väkivaltaisuus ja sotaisuus, jota en voi sietää. Myös pelien hyperaktiivisuus, hengästyttävä ja liian vauhdikas eteneminen ärsyttää. Typerää että kaikki pitää aina ja kaikessa tehdä tyhjäpäänä nopeasti vaikkakin ehkä taitavasti. Samoja tylsiä kuvioita drillataan yhä uudestaan. Ei kivaa, vaikka sillä tavalla saa tietysti tapettua paljon aikaa. Pienissä peleissä tällainen ei kuitenkaan haittaa.

     *     *     *

Nyt olen löytänyt yksinkertaisen Pythonin pelikirjaston Arcaden (2.1.2), jota esimerkkeineen ajattelin käydä mahdollisimman tarkkaan läpi loppuvuoden aikana. Sanottakoon sitä vaikka sitten minun harrastuksekseni. Joka tapauksessa pelkkä ajatus tuntuu viihdyttävältä, mukavalta ja älyllisesti haastavalta.

Pelien runko tai malli (template) on sekin yksinkertainen:

1. arcade kirjasto otetaan käyttöön:

import arcade

2. määritetään ikkunan koko ja annetaan pelille nimi:

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
SCREEN_TITLE = "Starting Template"

3. Määritellään pääluokka (class) peliä varten (ja sitten muut tarvittavat apuluokat):

class MyGame(arcade.Window):

4. MyGame luokkaa tarvitsee (mm. Javasta tutun)  konstruktorin ja metodit / funktiot:

    def __init__(self, width, height, title):
        super().__init__(width, height, title)

        arcade.set_background_color(arcade.color.BLACK)

    def setup(self):
        # Luodaan esim. liikuteltavat hahmot
        pass

    def on_draw(self):
        #Valmistellaan kuvien piirtämistä näytölle

        arcade.start_render()

        #Kutsutaan hahmoa ja piirretään se: draw()

    def update(self, delta_time):
        #Päivitetään näyttö, kun on tehty jotain esim. liikutettu hahmoa
        pass

    def on_key_press(self, key, key_modifiers):
        #ohjataan hahmoa näppäimillä (tai vaihtoehtoisesti hiirellä)
        
    def on_key_release(self, key, key_modifiers):
        pass

    def on_mouse_motion(self, x, y, delta_x, delta_y):
        pass

    def on_mouse_press(self, x, y, button, key_modifiers):
        pass

    def on_mouse_release(self, x, y, button, key_modifiers):
        pass

5. Luodaan MyGamesta ilmentymä ja käynnistetään peli

   def main():
     game = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
     game.setup()
     arcade.run()

if __name__ == "__main__":
    main()

     *     *     *

Kun yllä olevan mallin käynnistää, ei se tietysti tee mitään. Malli on malli, jonka tausta on määritetty mustaksi. Jos BLACK korvataan termillä AMAZON, tausta muuttuu tummanvihreäksi.

Avautuva ikkuna (kutsuna: arcade.Window) on sen kokoinen millaiseksi se on määritetty: leveys 800 pikseliä ja korkeus 600 pikseliä. Ikkunan nimenä on  "Aloitusnäkymä tai Starting template".

Ensimmäinen testi tai kokeilu, jonka tein, on klassikko ohjelmoinnissa eli "Hello World!" -tekstin kirjoittaminen ikkunaan, mikä tapahtuu tällä tavalla:

def on_draw(self):
    arcade.start.render()
    arcade.draw.text("Hello World!", SCREEN_WIDTH/2SCREEN_HEIGHT/2, 
    arcade.color.AMAZON,font_size=50)

Suuri vihreä teksti näkyy nyt ikkunan keskellä.

Linkki:

Arcade 2.1.2 The Python Arcade Library

Ei kommentteja:

Lähetä kommentti