Skip to main content

Rpg text adventure game maker

Project description

JSD-project

Cilj ovog projekta je razvijanje jezika specifičnog za domen koji omogućava opisivanje pravila, likova, sposobnosti i scenarija za turn-based tekst rpg igru. Ovaj jezik će biti usmeren na pojednostavljivanje procesa razvoja teksualnih igara.

Instaliranje

U terminal PyCharm-a vašeg projekta unosite sledeću komandu: pip install JSD-project

Uputstvo za pokretanje projekta

  • Importujte main iz JSD_project.
  • U vaš kod dodajte main.run_main().
  • Pokrenite aplikaciju.

Definisanje karakteristika igre:

  • Modelovanje likova:

    Za igrača se može zadati njegov opis, te njegove osnovne osobine (zdravlje, mana, damage, defence, mana damage, mana defence). Pored osnovnih osobina kreator takođe može da zada i osobine kao što su vigor (koji povećava inicijalno zdravlje), strength (koji povećava jačinu igrača) i endurance (koji povećava otpornost) koje igrač može da povećava kroz sistem levelovanja. Zatim je moguće zadati igračev početni XP, level, XP potreban za prelazak na naredni level. Takođe je moguće postaviti neke stvari u igračev ranac i na kraju postaviti igrača u početnu regiju. Ako se ne zada neka od osobina podrazumevana vrednost te osobnine će biti dodeljena. Kreator može da definiše i kakve tipove oružja ili armora igrač može da koristi.

Primer igrača je prikazan u sledećem isečku:

    player adventurer {
        currentExperience 0
        neededExperienceForLevelUp 20
        levelScalingPercentage 50000
        level 1
        portrayal "You are an intrepid adventurer."
        position entryway
        inventory {
            mars
        }
        intelligence 5
        vigor 10
        strength 10
        endurance 10
    
        health 100
        mana 100
        damage 10
        defence 5
    
        canEquip {
            sword,wood
        }
    }
  • Modelovanje neprijatelja:

    Za neprijatelje je moguće zadati njihov opis i poziciju, te neke osnovne osobine (zdavlje i mana). Pored osnovnih osobina takođe je moguće definisati i njegove specijalne napade. Jedan specijalan napad se sastoji od sledećih osobina healthDamage, healthDamageVariance, manaDamage, manaDamageVariance i frequency. Pored specijalnih napada moguće je definisati i healing akciju neprijatelja pri čemu se zadaju osobine verovatnoća, količina i varijansa za količinu hilovanja. Takođe je moguće definisati i određenu količinu XP poena koje će igrač dobiti nakon što ga pobedi kao i koja oružja, stvari ili armor će neprijatelj ispustiti prilikom njegovog poraza.

    Primer neprijatelja je prikazan u sledećem isečku:

     enemy young_dragon {
         portrayal "A young playful dragon looking for trouble."
         position kitchen
         drops {
             twix,
             mars,
             katana,
             shield
         }
         health 1000
         mana 10
         xp 50
         attacks {
             attack fire_attack {
                 manaDamage 30
                 manaDamageVariance 0.2
                 frequency 0.6
             }
             attack kick_attack {
                 healthDamage 40
                 healthDamageVariance 0.1
                 frequency 0.4
             }
         }
         healing {
             chance 0.5
             amount 10
             amountVariance 0.2
         }
     }
    
  • Modelovanje prostorija:

    Kod modelovanja prostorija kreator ima mogućnost da zada opis prostorijem, stvari koje se nalaze u prostoriji, povezanost prostorije sa drugim prostorijama, negativan efekat okoline kao i potrebne uslove za ulazak u samu prostoriju.

    Primer neprijatelja je prikazan u sledećem isečku:

     region hallway {
         portrayal "a dimly lit hallway"
         contains chest, katana
         ::
         N -> kitchen,
         S -> entryway
         ::
         environmental_dmg damage 33
         requirements key,flashlight
     }
    
  • Modelovanje stvari:

    Za stvari takođe postoji opis same stvari. Pored toga imamo i atribut isStatic koji služi za označavanje da li igrač može da je pokupi i stavi u svoj ranac. Pored toga imamo i atribut contains kojim kreator stavlja druge objekte unutar jednog. Ukoliko se objekat može koristiti potrebno je dodati i аctivation atribut kojim se naglašava željena akcija (vraćanje health-a ili mane).

    Primer stvari je prikazan u sledećem isečku:

     item chest {
         portrayal "A wooden chest on the ground."
         contains twix, mars
         isStatic True
     }
     
     item twix {
         portrayal "A twix bar. Caramel, shortbread and chocolate delightfully restoring health."
         activation heal 50
         isStatic False
     }
     
     item mars {
         portrayal "A mars bar. Caramel and chocolate delightfully restoring health."
         activation restoreMana 700
         isStatic False
     }
    
  • Modelovanje oružja i armora:

    Oružje daje dodatnu snagu udarcima igrača. Atribut koje jedno oružje može da ima jesu: healthDamage, healthCost, manaDamage, manaCost, minimalan potreban level za korišćenje oružja i tip samog oružja. Mimo dodatne snage može se definisati na oružje dok se koristi utiče na neku od osnovnih igračevih osobina kao sto su: current_max_health, current_max_mana, damage, defence, mana_damage i mana_defence. Oružje će modifikovati zadatu osobinu prema polinomijalnoj funkciji za koju se zadaju koeficijenti. Razlika između oružja i armora jeste ta što armor nema healthCost i manaCost i u tome što on smanjuje uticaj udaranja protivnika dok oružje povećava igračev udarac.

    Primer oružja je prikazan u sledećem isečku:

     weapon katana {
         portrayal "A very mighty sword"
         type sword
         healthDamage 10
         modifiers {
             modifier {
                 modifies current_max_health
                 coefficients 10,43
             }
             modifier {
                 modifies damage
                 coefficients 0.5,5,2
             }
             modifier {
                 modifies mana_defence
                 coefficients 25
             }
         }
     }
    

    Primer armora je prikazan u sledećem isečku:

    armor shield {
         portrayal "Ugly shield"
         type wood
         requiredLevel 1
         defense 30
         modifier {
             modifies defence
             coefficients 0.7,4,3
         }
     }
    
  • Modelovanje podešavanja igre:

    Kreator može definisati da li je moguće nositi više oružja,armora odjednom ili igrač mora da ispusti trenutno oružje kada pokupi novo. Takođe može definisati da li dobija dodatni potez ukoliko u toku borbe odluči da iskoristi neki item ili ne. U igri je potrebno definisati početnu i finalnu prostoriju.

    Primer podešavanja igre je prikazan u sledećem isečku:

     settings {
         dropOtherWeapons True
         dropOtherArmors False
         additionalTurnAfterUse False
     }
    
     start_position entryway
     final_position backyard
    
  • Interpretacija borbe:

    Kada igrač uđe u prostoriju poroverava se da li u toj prostoiji postoji neprijatelj i ako postoji započinje borba. Borba se odvija po turn base sistemu odnosno igrač i neprijatelj naizmenično odigravaju poteze. Prilikom svakog svog poteza igrač može odabrati da napadne neprijatelja, da iskoristi neki item iz ranca ili da pobegne iz borbe, pri čemu se vraća u prethodnu prostoriju. Prilikom poraza igrač se oživljava u startnoj prostoriji sa praznim rancem, dok se sve njegove stvari koje je posedovao prilikom borbe smeštaju u prostoriju koja je prethodila prostoroji u kojoj se odvijala borba. Ako igrač pobedi neprijatelja on biva nagrađen sa XP poenima, item-ima i oružjima koje je neprijatelj ispustio.

  • Komande:

    Lista mogućih komandi koje igrač može da izvrši je sledeća:

    • move <dir> - kretanje u određenom pravcu
    • drop <item> - ispuštanje stvari, oružja ili armora
    • open <item> - otvaranje stvari
    • take <item> - stavljanje stvari, oružja ili armora u igračev ranac
    • use <item> - aktiviranje stvari
    • equip <item> - opremanje oružjem ili armorom
    • unequip <item> - skidanje oružja ili armora
    • info <item> - detaljan opis stvari, oružja ili armora
    • inventory - uvid u igračev ranac
    • health - uvid u zdravstveno stanje
    • attack - napadanje portivnika
    • flee - povlačenje iz borbe
    • inc vigor - povećavanje vigora
    • inc endurance - povećavanje izdržljivosti
    • inc strength - povećavanje snage
    • inc intelligence - povećavanje inteligencije
    • stats - uvid u trenutno stanje igračevih osobina

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

JSD_project-1.0.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

JSD_project-1.0-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file JSD_project-1.0.tar.gz.

File metadata

  • Download URL: JSD_project-1.0.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.2

File hashes

Hashes for JSD_project-1.0.tar.gz
Algorithm Hash digest
SHA256 60d7495e80ecf8ed5bfe3ce95cc6cabb1272b2eaa20bf9c7ece7fa15f3fdc228
MD5 c8ac2c63cc24e9155f3fcc76b1451ae4
BLAKE2b-256 54666f2af12e52de6a068a339c34e8ab606de2fd7c329a82ea0a28fa5cb4d7bb

See more details on using hashes here.

File details

Details for the file JSD_project-1.0-py3-none-any.whl.

File metadata

  • Download URL: JSD_project-1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.2

File hashes

Hashes for JSD_project-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 96b6150ddb119e4087f9c0141b3e48d99e85bb5891562dacf679eb955442dde7
MD5 39a49d623e185c41bee81e6ecb476695
BLAKE2b-256 ec0051b438eaa192979cf566fdeeba43129357477499c9eece18a1b3347d3458

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page