HNO3 Tekstiseikkailuengine on tehokas tekstiseikkailupeleille tarkoitettu peliengine joka käyttää kompaktia ja yksinkertaista TH-skriptikieltä. Engine on PUBLIC DOMAIN:ia eli voit käyttää sitä omissa produktioissasi kuten parhaaksi näet!
HNO3 Tekstiseikkailuenginen lähdekoodin lisäksi tulee kaksi esimerkkipeliä. Peli 2 on tejeezin tekemä ja se demonstroi muun muassa suosituista ZORK-tekstiseikkailupeleistä tuttua ASCII-grafiikkaa HNO3 Tekstiseikkailuenginen kanssa.
Koodin toiminta:
HNO3 Tekstiseikkailuengine toimii niin että se lukee TH-skriptitiedostosta ensin tilannekuvauksen rivimäärän (tästälähtien A) , sitten A riviä tilannekuvausta ja tulostaa sen konsolille.
Sitten HNO3 Tekstiseikkailuengine lukee tiedostosta etenemisvaihtoehtojen määrän (tästälähtien B) sekä oikean vaihtoehdon (tästälähtien C). Nyt HNO3 Tekstiseikkailuengine lukee tiedostosta B riviä jotka ovat vaihtoehdot. (HNO3 Tekstiseikkailuengine lisää itse numerot vaihtoehdoille!)
Nyt käyttäjältä kysytään mitä tehdään ja kysymys pystyy ikuisessa loopissa kunnes annettu vaihtoehto on väliltä 1 - B. Validin vaihtoehdon saamisen jälkeen HNO3 Tekstiseikkailuengine lukee tiedostosta taas B riviä ja näyttää sen rivin joka vastasi valitsemaasi vaihtoehtoa.
Nyt HNO3 Tekstiseikkailuengine tarkistaa että jos antamasi vaihtoehto oli C niin siirrytään seuraavaan kysymykseen (sama rujanssi alusta) ja jos se oli jotain muuta, peli loppuu. Kun TH-skriptitiedosto loppuu, näytetään viesti jossa onnitellaan pelin läpäisemisestä.
tekstiseikkailuengine.cpp
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int main(int argc, char *argv[]) { FILE *f=NULL; char BUFFERI[200]; int juttu,himo,wamma,korpi; f = fopen(argv[1],"r"); if (!f) { cout << "tiedostoa ei ole." << endl; return(1); } ALUSTxD:; fseek(f,0,SEEK_SET); while (fgets(BUFFERI,200,f)) { himo = atoi(BUFFERI); for (juttu=0;juttu<himo;juttu++) { fgets(BUFFERI,200,f); cout << BUFFERI; } fgets(BUFFERI,200,f); himo = atoi(BUFFERI); fgets(BUFFERI,200,f); wamma = atoi(BUFFERI); for (juttu=0;juttu<himo;juttu++) { fgets(BUFFERI,200,f); cout << (juttu+1) << ". " << BUFFERI; } korpi = -1; while(!(korpi >= 1 && korpi <= himo)) { cout << "-> -> -> ??? "; cin >> korpi; } for (juttu=0;juttu<himo;juttu++) { fgets(BUFFERI,200,f); if (korpi==(juttu+1)) cout << BUFFERI; } cout << endl << endl; if (korpi != wamma) goto KUALLU; } goto MAGGARA; KUALLU:; cout << "haha luuseri kuolit!!!!! :D :D :D" << endl; cout << "kirjota 5 jos haluut uusixxxx!!!" << endl; cin >> juttu; if (juttu==5) goto ALUSTxD; fclose(f); return(1); MAGGARA:; fclose(f); cout << "VOITIT...........! :-o :-o" << endl; return(0); }
mummoseikkailu.ths (esimerkkipeli 1)
20 Olet viemärissä. Menetkö..? 3 3 Munalle Ravintolaan rAutakauppaan ei saa munata! oot jo valmiix laeski!!!!!!!!!!!!!!!!!1 vautsi sä keksit tän jutu n juoanoen! 3 Olet rautakaupassa, mieleesi tulee perverssi juttu Nauran jutulle yksinäsi. Kauppias katsoo sinua oudosti. Mitä haluat ostaa? 3 1 Liisteriä Nauloja Tomaatteja jännää! kiihoittavaa! ;) 1 Olet siis ostanut liisteriä koska päätit juuri..? 5 3 Tapetoida seinäsi Tapetoida naapurin seinän Tapetoida mummosi seinään Syödä liisteriä mutsis ootko läski luuseri ootko luuseri joka on läski that's teh point!! yummy ;---------D MULLON MUNA..........MÄGGÄRÄ! 3 Heh! Keksit tapetoida mummosi seinään! Menet mummolaan ja mummo onkin kuollut aivokuppaan! Mitä teet mummosta? 4 4 Juusto Fodue Kebab Porkkanaraaste Kansaneläkelaitos NAM! :D YUMMY :D YUMMU YUMSTERS :D hyi!!!!!! :--------oooooooooooooooooooooooooo
kebabravintolaseikkailu (esimerkkipeli 2 - kiitos tejeez!)
9 seikkailu __ / /_ ____ _ ___ / / / __/ // / / / / /\ \ / __ //__ /__/ /__ /_/ \_\ /___ /___/ / / /__/ ravintolassa TERVE tuloo teksti pelii :D:D:DD:D: haaluuks pelaa :D:D:D 2 1 joo ei moi homo 2 nyt sä oot kebab ravintolassa :D:D mitä tillaat 2 2 pitaleipä kebab keba ranskalaisil haha pita leipä kebabii ei oo haha hii 2 nyt sul on ranxalaiskebab mttä teet 3 1 syön sen heitän kaverin naamale :D:D lähen ulos söit kebabin kaveri suuttu hei hei 1 mitä teet 2 2 lyöt kaverias lähet kotii kaveri ei tykäbny lähit kotii
Paras tekstiseikkailuengine jota oon nähny! :D
Tää olis ehkä jopa saatettu julkaista ilman tuota esimerkkipeliä. ;)
Hieno moottori...
Aihe on jo aika vanha, joten et voi enää vastata siihen.