Haatsava peliprojecti(minulle) nimeltä Pet!

Voit pyytää apua ohjelmointiongelmiin täältä.
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

TheFish wrote:Helpointa olisi varmaan tehdä waitkey:n avulla.
Eipä toimi viäkään... Hitto alkaa tympiin...
Kun painan kaks kertaa Enterii se näyttää kaiken putkeen...
Millä hitolla mä saan ton toimiin?
Älä kysy multa!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by koodaaja »

Jepjep, tympiminen on normaalia ohjelmoidessa, ainakin kun ei käsitä mikä on pielessä. Tuosta koodinpätkästä sanoisin melkein, että heitä sillä vesilintua. Jos aiot tehdä koko pelin tekstipohjaisena, addtextin käyttö on epäkäytännöllistä, jos teet sen graafisena, gotottelu ei oikein hemaise. Mutta korjaanpas silti ongelmia:

Alussa enterinpainamissysteemi lievästi sanottuna kusee. KeyHit tarkistetaan yhdeltä framelta, joten käyttäjällä on aikaa semmoinen apout 0.05 sekuntia painaa enteriä. Lisäksi goto on turha, tuohon väliin kun ei todennäköisesti ole mitään tulossa. Joten

Code: Select all

Repeat
    Drawscreen
Until Keyhit(28)
ajaa asian varsin nätisti. Se siis päivittää tekstin ja odottaa enterin painamista kiltisti.

Noniin, valintaan. Se kaipaa selvästi jonkinnäköistä looppia sekin, jotta ohjelma odottaisi. Toki saman voi tehdä kikkailemalla, mutta selkeyden vuoksi looppi on hyvä.

Code: Select all

valinta:
'tekstien lisääminen
Repeat
    a = GetKey()
    Drawscreen
Until a

If a = Asc("1") Then Goto koira
If a = Asc("2") Then Goto kissa

Goto valinta
Näin ohjelma odottaa, että jotain painetaan, ja painamisen jälkeen tarkistetaan, onko kyseessä 1 tai 2. Tämän voisi varmasti toteuttaa paremminkin, mutta tämä toimii ja on varsin selkeä.
Niin, tässä sama juttu kuin edellisessä: koodissasi ei pysähdytty odottamaan, vaan käyttäjälle jäi pieni sekunnin murto-osa aikaa valita kissan ja koiran väliltä. Siinä ei myöskään DrawScreeniä esiintynyt, joten käyttäjälle ei näytetty tekstejä ikinä.

Noniin, koira-sektiossakin on pientä probleemia. Ajastinta käytetään nimittäin varsin kiintoisasti, ja koiran jätökset voi korjata vain ennen niiden saapumista. Koko systeemi käydään lisäksi vain kerran läpi, joten looppia huutaa tämäkin. Ja haukku- ja paskoi-muuttujille ei annettu arvoja, joten ne tapahtuivat heti. Nehän kuuluu alustaa Timer():iin.

Code: Select all

Koira:
ClearText

haukku = Timer()
paskoi = Timer()
siivottu = True

AddText "Koirasi katsoi sinua hassusti!"

Repeat
    If Timer()>haukkui+15000 Then
        AddText "Koira haukkui sinulle!"
        haukkui=Timer()
    EndIf
    
    If Timer()>paskoi+30000 Then
        AddText "Koira päästi paskat lattialle! Korjaa paskat pois D napilla!"
        paskoi=Timer()
        siivottu=False
    EndIf
    
    If Keyhit(cbkeyd) Then
        If siivottu Then AddText "Ei ole jätöksiä, joita korjata!"
        If Not siivottu then AddText "Korjasit koirasi jätökset!":siivottu = True
    EndIf
    DrawScreen
Forever
Näin ei myöskään mennä kissa-osioon suoraan koira-osiosta, kuten koodissasi oli (koodi suoritetaan rivistä 1 niin pitkälle kuin niitä riittää, labeleihin yms. ei pysähdytä)

Ehkä tämä selkeyttää jotain. Jos et saa koodinpätkistä selvää, niin kysy vain tarkennusta.
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

koodaaja wrote:Jepjep, tympiminen on normaalia ohjelmoidessa, ainakin kun ei käsitä mikä on pielessä. Tuosta koodinpätkästä sanoisin melkein, että heitä sillä vesilintua. Jos aiot tehdä koko pelin tekstipohjaisena, addtextin käyttö on epäkäytännöllistä, jos teet sen graafisena, gotottelu ei oikein hemaise. Mutta korjaanpas silti ongelmia:

Alussa enterinpainamissysteemi lievästi sanottuna kusee. KeyHit tarkistetaan yhdeltä framelta, joten käyttäjällä on aikaa semmoinen apout 0.05 sekuntia painaa enteriä. Lisäksi goto on turha, tuohon väliin kun ei todennäköisesti ole mitään tulossa. Joten

Code: Select all

Repeat
    Drawscreen
Until Keyhit(28)
ajaa asian varsin nätisti. Se siis päivittää tekstin ja odottaa enterin painamista kiltisti.

Noniin, valintaan. Se kaipaa selvästi jonkinnäköistä looppia sekin, jotta ohjelma odottaisi. Toki saman voi tehdä kikkailemalla, mutta selkeyden vuoksi looppi on hyvä.

Code: Select all

valinta:
'tekstien lisääminen
Repeat
    a = GetKey()
    Drawscreen
Until a

If a = Asc("1") Then Goto koira
If a = Asc("2") Then Goto kissa

Goto valinta
Näin ohjelma odottaa, että jotain painetaan, ja painamisen jälkeen tarkistetaan, onko kyseessä 1 tai 2. Tämän voisi varmasti toteuttaa paremminkin, mutta tämä toimii ja on varsin selkeä.
Niin, tässä sama juttu kuin edellisessä: koodissasi ei pysähdytty odottamaan, vaan käyttäjälle jäi pieni sekunnin murto-osa aikaa valita kissan ja koiran väliltä. Siinä ei myöskään DrawScreeniä esiintynyt, joten käyttäjälle ei näytetty tekstejä ikinä.

Noniin, koira-sektiossakin on pientä probleemia. Ajastinta käytetään nimittäin varsin kiintoisasti, ja koiran jätökset voi korjata vain ennen niiden saapumista. Koko systeemi käydään lisäksi vain kerran läpi, joten looppia huutaa tämäkin. Ja haukku- ja paskoi-muuttujille ei annettu arvoja, joten ne tapahtuivat heti. Nehän kuuluu alustaa Timer():iin.

Code: Select all

Koira:
ClearText

haukku = Timer()
paskoi = Timer()
siivottu = True

AddText "Koirasi katsoi sinua hassusti!"

Repeat
    If Timer()>haukkui+15000 Then
        AddText "Koira haukkui sinulle!"
        haukkui=Timer()
    EndIf
    
    If Timer()>paskoi+30000 Then
        AddText "Koira päästi paskat lattialle! Korjaa paskat pois D napilla!"
        paskoi=Timer()
        siivottu=False
    EndIf
    
    If Keyhit(cbkeyd) Then
        If siivottu Then AddText "Ei ole jätöksiä, joita korjata!"
        If Not siivottu then AddText "Korjasit koirasi jätökset!":siivottu = True
    EndIf
    DrawScreen
Forever
Näin ei myöskään mennä kissa-osioon suoraan koira-osiosta, kuten koodissasi oli (koodi suoritetaan rivistä 1 niin pitkälle kuin niitä riittää, labeleihin yms. ei pysähdytä)

Ehkä tämä selkeyttää jotain. Jos et saa koodinpätkistä selvää, niin kysy vain tarkennusta.

Kiitti paljon :D
Nyt onnaa... Toivottavasti ei tuu enään ongelmia :roll:
Älä kysy multa!
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

Juu nyt sain tämän pelaan tämän tekstipelin mutta pari juttua haluaisin tietää:
1. Kun pistän vaikka että koirasi haukkui sinulle ja se teksti tulee sinisellä, mutta sitten tulee vaikka että koirasi on sairas ja tekstin väri muuttuu violetiksi. Eli mitenkä sen saa että seuraavan kerran kun koira haukkuu mulle se teksti ei näy violettina?

2. Mitenkä teen sillain että toisessa yläkulmassa on koko ajan teksti että: Nälkä: (100%-0%), Energia: (100%-0%)
(huom. sillain että nuo luvut laskee koko ajan pikkuhiljaa...) Ja sitten kun vaikka annan ruokaa niin tota Nälkään tulee vaikka 23% lisää... Tai kun painan vaikka Z niin Koiran tuo energia alkaa nousta ja sitten kun se on 100% niin se herää automaattisesti(tai jos painat vaikka H:ta niin sää herätät sen)

3. Mitenkä sillain vois tehä johonkin kulmaan listan mitä tavaroita sulla on? Vaikka että Ruokaa x4...

4. Sitten sillain että ylhäällä on kokoajan joku tietty teksti mutta siinä alempana on teksti joka aina poistuu tietyn ajan päästä...?

Sori jos tuotan liikaa vaivaa mutta en oikein hallitte näitä juttuja :roll:
Älä kysy multa!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by koodaaja »

Kehottaisin käyttämään komentoa Text. Sillä saat piirrettyä tekstin, joskin se pitää päivittää joka ruudunpiirrolla. Ja muuttujien ja Textin yhteiskäytöllä saat tehtyä prosenttien laskemisen. Ja lisääminen toimii samoin. Ruoka yms. menee myös muuttujilla, teet vain määrästä muuttujan ja Textillä tulostat "Ruokaa x " + muuttuja -tyyppisesti. Alempana olevan tekstin poistumisen saat aikaan siten, että Text-komento suoritetaan vain tarpeen vaatiessa, eli vaikka If koira_on_nalkainen Then Text 10, 40, "Koira on nälkäinen", jolloin tekstiä ei näy koiran ollessa kylläinen. Väriä vaihdetaan Colorilla. Jos haluat vanhan värin takaisin, color-komennolle annetaan vain sama(t) arvo(t) kuin aiemmin.

Ja tässä vaiheessa huomautan, että yksi looppi (ei gotoja, mahdollisesti gosubeja tai mieluummin funkkareita) koko systeemille on aika pakollinen. Eli samassa loopissa tulostetaan ilmoitukset, inventory, statsit sun muut sekä valvotaan näppistä ja tehdään yleensä kaikki tarpeellinen. Ihan vaan, ettet joudu kirjoittamaan samoja koodeja tuhansiin paikkoihin.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Koodiapina »

Code: Select all

repeat
     color cbblue
     text 0,0,"sininen"
     color cbred
     text 0,10,"punainen"
     drawscreen
forever

Code: Select all

AddText ""
    AddText "r = ruoki"
    nälkä = 100
    Repeat
        Text ScreenWidth()-(TextWidth("Nälkä: 00 ")),0,"Nälkä: "+nälkä
        If Timer()>jotain+500 Then
            nälkä - 1
             jotain = Timer()
        EndIf
        If KeyHit(cbkeyr) Then
            ' maksimi on 100, 23% = 23
            ' jos maksimi on eri, joutuu kikkailee
            ' matikalla: a / b * 100
            If nälkä > 100-23 Then
                AddText "Eläin on tarpeeksi kylläinen!"
            Else
                AddText "Ruokit eläintä!"
                nälkä + 23
            EndIf
        EndIf
        DrawScreen
    Forever 

Code: Select all

' 10 tavaraa
    Dim tavara(10) As String
    tavara(1) = "pesukone"
    tavara(2) = "kuumailmapallo"
    tavara(3) = "jotain sälää"
    Repeat
        For i=1 To 10
            If tavara(i)<>"" Then
                Text 0,i*10,tavara(i)
            EndIf
        Next i
        DrawScreen
    Forever 

Code: Select all

    nakyy = 100
    Repeat
        nakyy - 1
        If nakyy>0 Then Text 0,0,"lol"
        DrawScreen
    Forever 
Nuo ei sitten oo parhaita tapoja, mutta yritin pitää noi yksinkertasina ja lyhyinä.
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

Grandi wrote:

Code: Select all

    nakyy = 100
    Repeat
        nakyy - 1
        If nakyy>0 Then Text 0,0,"lol"
        DrawScreen
    Forever 
Mitenkä tota voi soveltaan ajastettuihin teksteihin?

Ja testasin tota nälkä systeemii. Se toimii muuten mutta kun upotan sen koodiin niin se ei sitten enään käy("mene alaspäin")

Edit: Sitten mitenkä saa tehtyä sillain että voit aluksi kirjoittaa lemmikkisi nimen ja sitten se käyttää sitä koko ajan eikä kokoajan sanaa koira(tai kissa)
Älä kysy multa!
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by -Z- »

Code: Select all

AddText "lemmikkisi nimi:"
Repeat
    Locate 0,20
    nimi$ = Input(">")
    DrawScreen
Until KeyHit(28)
ClearKeys
CloseInput
Text 0, 20, nimi
DrawScreen
WaitKey
sitten vaan käytät muuttujaa "nimi " aina kun lemmikin nimi pitää saada näkyville
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

-Z- wrote:

Code: Select all

AddText "lemmikkisi nimi:"
Repeat
    Locate 0,20
    nimi$ = Input(">")
    DrawScreen
Until KeyHit(28)
ClearKeys
CloseInput
Text 0, 20, nimi
DrawScreen
WaitKey
sitten vaan käytät muuttujaa "nimi " aina kun lemmikin nimi pitää saada näkyville
Arvostan kovasti apuasi mutta kun kirjoitan AddText "nimi katsoi sinua" niin siinä on tuo nimi sana alla ja päällä se lemmikin nimi ja sekin pikku piperryksenä...
Älä kysy multa!
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by -Z- »

kokeileppa

Code: Select all

addtext nimi+"katsoi sinua"
pitäisi vörkkiä.
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Jonez »

Voit tulostaa muuttujan arvon kirjoittamalla muuttujanimen esim. text-komennolla, kuten -Z-:n varsin monipuolisesta esimerkistä voit huomata. Muuttujia voi plussata, miinustaa jne. Oikeastaan voit tehdä melkein mitä vain matemaattisia yhtälöitä, jos matemaattiset taitosi riittävät. Cb:ssä voit myös helposti yhdistää merkkijonoja ja merkkijonomuuttujia. Merkkijono on siis pätkä tekstiä.

- Kokonaislukumuuttujat sisältävät kokonaislukuja, esim. 1, 2, -4321, 32154.
- Merkkijonomuuttuja on muuttuja joka sisältää tekstiä. Merkkijonomuuttujan tunnistaa dollarimerkistä muuttujan perässä. Esim: nimi$

Muitakin muuttujia on, esim. liukulukumuuttujat, eli muuttujat jotka sisältävät desimaalilukuja. (Risuaita loppuun: Pituus#, paino#)

Tässä kaksi koodia jossa leikitään vähän muuttujilla. Siitä pitäisi saada ihan hyvä kuva miten esim. Kirjoitat ruudulle sellaista tekstiä, jossa on esim. lemmikin nimi, jota voi muuttaa, sekä samaan aikaan pysyvää kirjoitusta.

Code: Select all

SCREEN 800, 600

matin_ikä = 40
tepon_ikä = 50
erotus = tepon_ikä - matin_ikä

//Myös näin voi tehdä:
etunimi$ = "Erkki"
sukunimi$ = "Esimerkki"
koko_nimi$ = etunimi$ + " " + sukunimi$

numero1 = 15
numero2 = 25
numero3 = 35
Repeat
    
    Text 20, 20, "Matti on " + matin_ikä + " vuotta."
    Text 20, 40, "Teppo taas on " + tepon_ikä + " vuotta."
    Text 20, 60, "Näin ollen Matti on " + erotus + " vuotta nuorempi kuin teppo"
    
    Text 20, 100, "Nimi: " + koko_nimi$ + ". Voidaan ilmaista myös näin:"
    Text 20, 120, sukunimi$ + ", " + etunimi$

    //Laskutoimitukset pitää erottaa suluilla, käytämme "erottavia" plussia.
    Text 20, 160, numero1 + " + " + numero2 + " - " + numero3 + " = " + ( numero1 + numero2 - numero3 )

    DrawScreen
Forever

Code: Select all

SCREEN 800, 600

matin_ikä = 40
tepon_ikä = 40

Repeat
    
    //Tässä katsomme onko ylös- tai alaspäinnuolta painettu. Jos on, muutamme matin ikää.
    If KeyHit( CbKeyUp ) Then matin_ikä = matin_ikä + 1
    If KeyHit( CbKeyDown ) Then matin_ikä = matin_ikä - 1

    //Pitkähkö ehtolauseke, jossa katsomme onko muuttuja matin_ikä suurempi, pienempi vai yhtäsuuri kuin tepon_ikä.
    //Tämän perusteella annamme muuttujalle info$ arvon.
    If matin_ikä > tepon_ikä Then
        If matin_ikä - tepon_ikä = 1 Then 
            vuosi$ = " vuoden"
        Else
            vuosi$ = " vuotta"
        EndIf
        info$ = "Matti on Teppoa " + ( matin_ikä - tepon_ikä ) + vuosi$ + " vanhempi."
    ElseIf matin_ikä < tepon_ikä Then
        If tepon_ikä - matin_ikä = 1 Then 
            vuosi$ = " vuoden"
        Else
            vuosi$ = " vuotta"
        EndIf        
        info$ = "Matti on Teppoa " + ( tepon_ikä - matin_ikä ) + vuosi$ + " nuorempi."
    ElseIf matin_ikä = tepon_ikä Then
        info$ = "Matti ja Teppo ovat saman ikäisiä!"
    EndIf
    
    //Kirjoitamme kaiken ylös. Tämä on ainoa mitä itse ohjelmassa näkyy.
    Text 20, 20, "Ylös- ja alaspäinnuolet muuttavat Matin ikää."
    Text 20, 60, "Matti on: " + matin_ikä
    Text 20, 80, "Teppo on: " + tepon_ikä
    Text 20, 100, info$

    DrawScreen
Forever
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

Jonez wrote:Voit tulostaa muuttujan arvon kirjoittamalla muuttujanimen esim. text-komennolla, kuten -Z-:n varsin monipuolisesta esimerkistä voit huomata. Muuttujia voi plussata, miinustaa jne. Oikeastaan voit tehdä melkein mitä vain matemaattisia yhtälöitä, jos matemaattiset taitosi riittävät. Cb:ssä voit myös helposti yhdistää merkkijonoja ja merkkijonomuuttujia. Merkkijono on siis pätkä tekstiä.

- Kokonaislukumuuttujat sisältävät kokonaislukuja, esim. 1, 2, -4321, 32154.
- Merkkijonomuuttuja on muuttuja joka sisältää tekstiä. Merkkijonomuuttujan tunnistaa dollarimerkistä muuttujan perässä. Esim: nimi$

Muitakin muuttujia on, esim. liukulukumuuttujat, eli muuttujat jotka sisältävät desimaalilukuja. (Risuaita loppuun: Pituus#, paino#)

Tässä kaksi koodia jossa leikitään vähän muuttujilla. Siitä pitäisi saada ihan hyvä kuva miten esim. Kirjoitat ruudulle sellaista tekstiä, jossa on esim. lemmikin nimi, jota voi muuttaa, sekä samaan aikaan pysyvää kirjoitusta.

Code: Select all

SCREEN 800, 600

matin_ikä = 40
tepon_ikä = 50
erotus = tepon_ikä - matin_ikä

//Myös näin voi tehdä:
etunimi$ = "Erkki"
sukunimi$ = "Esimerkki"
koko_nimi$ = etunimi$ + " " + sukunimi$

numero1 = 15
numero2 = 25
numero3 = 35
Repeat
    
    Text 20, 20, "Matti on " + matin_ikä + " vuotta."
    Text 20, 40, "Teppo taas on " + tepon_ikä + " vuotta."
    Text 20, 60, "Näin ollen Matti on " + erotus + " vuotta nuorempi kuin teppo"
    
    Text 20, 100, "Nimi: " + koko_nimi$ + ". Voidaan ilmaista myös näin:"
    Text 20, 120, sukunimi$ + ", " + etunimi$

    //Laskutoimitukset pitää erottaa suluilla, käytämme "erottavia" plussia.
    Text 20, 160, numero1 + " + " + numero2 + " - " + numero3 + " = " + ( numero1 + numero2 - numero3 )

    DrawScreen
Forever

Code: Select all

SCREEN 800, 600

matin_ikä = 40
tepon_ikä = 40

Repeat
    
    //Tässä katsomme onko ylös- tai alaspäinnuolta painettu. Jos on, muutamme matin ikää.
    If KeyHit( CbKeyUp ) Then matin_ikä = matin_ikä + 1
    If KeyHit( CbKeyDown ) Then matin_ikä = matin_ikä - 1

    //Pitkähkö ehtolauseke, jossa katsomme onko muuttuja matin_ikä suurempi, pienempi vai yhtäsuuri kuin tepon_ikä.
    //Tämän perusteella annamme muuttujalle info$ arvon.
    If matin_ikä > tepon_ikä Then
        If matin_ikä - tepon_ikä = 1 Then 
            vuosi$ = " vuoden"
        Else
            vuosi$ = " vuotta"
        EndIf
        info$ = "Matti on Teppoa " + ( matin_ikä - tepon_ikä ) + vuosi$ + " vanhempi."
    ElseIf matin_ikä < tepon_ikä Then
        If tepon_ikä - matin_ikä = 1 Then 
            vuosi$ = " vuoden"
        Else
            vuosi$ = " vuotta"
        EndIf        
        info$ = "Matti on Teppoa " + ( tepon_ikä - matin_ikä ) + vuosi$ + " nuorempi."
    ElseIf matin_ikä = tepon_ikä Then
        info$ = "Matti ja Teppo ovat saman ikäisiä!"
    EndIf
    
    //Kirjoitamme kaiken ylös. Tämä on ainoa mitä itse ohjelmassa näkyy.
    Text 20, 20, "Ylös- ja alaspäinnuolet muuttavat Matin ikää."
    Text 20, 60, "Matti on: " + matin_ikä
    Text 20, 80, "Teppo on: " + tepon_ikä
    Text 20, 100, info$

    DrawScreen
Forever
Jaa tuollain! Thanks! Tätä tulen tarviimaan!
-Z- wrote:kokeileppa

Code: Select all

addtext nimi+"katsoi sinua"
pitäisi vörkkiä.
Juu kiitos! Nyt toimii tuo!

Enään tarvitsen näihin pariin muuhun kysymykseen apua:

Mitenkä sovellan tämän koodin ajastimen teksteihin:

Code: Select all

    nakyy = 100
    Repeat
        nakyy - 1
        If nakyy>0 Then Text 0,0,"lol"
        DrawScreen
    Forever 
Ja sitten tuo elämä koodi ei oikein toimi!
Mikä on vikana kun ei tuo elämä rullaa vaikka pitäis?!? Koodi:

Code: Select all

    Koira:
    ClearText
    



    sairas = Timer()
    haukku = Timer()
    paskoi = Timer()
    siivottu = True

 AddText nimi+" katsoi sinua hassusti"

    Repeat
    Color cbblue
    
        nakyy = 1000
  
            nakyy - 1
            If nakyy>0 Then Text 0,0,"lol"
            
        If Timer()>haukkui+15000 Then
            AddText nimi+" haukkui sinulle!"
            haukkui=Timer()
        EndIf
        
        If Timer()>leikkii+10000 Then
        AddText nimi+" rupesi leikkimään"
        leikkii=Timer() 
        EndIf    
Color cbBlackSkin        
        If Timer()>paskoi+30000 Then
            AddText nimi+" päästi paskat lattialle! Korjaa paskat pois D napilla!"
            paskoi=Timer()
            siivottu=False
        EndIf
       
        If Keyhit(cbkeyd) Then
            If siivottu Then AddText "Ei ole jätöksiä, joita korjata!"
            If Not siivottu Then AddText "Korjasit jätökset!":siivottu = True                     
        EndIf
Color cbMagenta        
        If Timer()>sairas+200000 Then
        AddText nimi+" näyttää oudolta... Sinun olisi paras viedä se lääkäriin L napista"
        sairas=Timer()
        parannettu=False
        EndIf
        
        If KeyHit(cbkeyl) Then
        If parannettu Then AddText nimi+" sai terveen paperit!"
        If Not parannettu Then AddText "Lääkäri tutki lemmikkisi ja antoi sille lääkettä":parannettu = True
        EndIf 

    
        Color cbyellow
        nälkä = 100
  
            Text ScreenWidth()-(TextWidth("Nälkä: 00 ")),0,"Nälkä: "+nälkä
            If Timer()>jotain+1000 Then
                nälkä - 1
                 jotain = Timer()
            EndIf
            If KeyHit(cbkeyr) Then

                If nälkä > 100-23 Then
                    AddText nimi+" on tarpeeksi kylläinen!"
                Else
                    AddText "Ruokit lemmikiäsi!"
                    nälkä + 23
                EndIf
            EndIf
            DrawScreen 
        Forever
Älä kysy multa!
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Jonez »

No asetat kokoajan muuttujan "nälkää" sadaksi. Laita se 'nälkä = 100' jonnekkin ennen silmukkaa, muuten muuttujan nälkä arvo ei voi muuttua. Sama koskee muuttujaa 'nakyy'.

Lisäksi, kuten sanoin, merkkijonomuuttujissa pitää olla se dollarimerkki edessä. Riittää että käytät sitä vain kerran, kunhan se on ensimmäisessä sennimisessä muuttujassa. Muutoin cb ei tiedä että kyseessä on merkkijonomuuttuja. Esim:

Nimi$ = "Pertti" // <-- Huomaa, dollarimerkki
text 20, 20, Nimi + " on ihminen!" // <-- huomaa, ei dollarimerkkiä. Toimii koska muuttuja on jo määritelty edellisellä rivillä.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

Jonez wrote:No asetat kokoajan muuttujan "nälkää" sadaksi. Laita se 'nälkä = 100' jonnekkin ennen silmukkaa, muuten muuttujan nälkä arvo ei voi muuttua. Sama koskee muuttujaa 'nakyy'.

Lisäksi, kuten sanoin, merkkijonomuuttujissa pitää olla se dollarimerkki edessä. Riittää että käytät sitä vain kerran, kunhan se on ensimmäisessä sennimisessä muuttujassa. Muutoin cb ei tiedä että kyseessä on merkkijonomuuttuja. Esim:

Nimi$ = "Pertti" // <-- Huomaa, dollarimerkki
text 20, 20, Nimi + " on ihminen!" // <-- huomaa, ei dollarimerkkiä. Toimii koska muuttuja on jo määritelty edellisellä rivillä.
Kiitos! Nyt sain toimiin elämätkin :D
Mutta en ymmärtänyt vieläkään tota juttuu että mitenkä saan ajastetun lauseen katoamaan.
Voiko joku näyttää esimerkkiä? Vaikka tähän koodiin:

Code: Select all

Repeat
DrawScreen
Until KeyHit(28)

nimi:
ClearText
AddText "Lemmikkisi nimi:"
Repeat
    Locate 0,20
    nimi$ = Input(">")
    DrawScreen
Until KeyHit(28)
ClearKeys
CloseInput
Text 0, 20, nimi
DrawScreen
WaitKey


Perus:
ClearText
AddText "Ok! Nyt voit tehä tähän sen systeemin esimerkiksi" 
Joku = Timer()
Repeat
If Timer()>Joku+2000 Then
AddText nimi+"Help me!"
joku=Timer()
EndIf 
DrawScreen 
Forever 
 

Älä kysy multa!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by koodaaja »

Älä aseta Joku-muuttujan arvoa vielä tuossa vaiheessa Timer()iin, äläkä käytä AddTextiä.

Code: Select all

ajastin = Timer()

Repeat
    If Timer() - ajastin > 1000 And Timer() - ajastin < 3000 Then Text 10, 10, "Kuiva esimerkkiteksti"
    Drawscreen
Forever
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

koodaaja wrote:Älä aseta Joku-muuttujan arvoa vielä tuossa vaiheessa Timer()iin, äläkä käytä AddTextiä.

Code: Select all

ajastin = Timer()

Repeat
    If Timer() - ajastin > 1000 And Timer() - ajastin < 3000 Then Text 10, 10, "Kuiva esimerkkiteksti"
    Drawscreen
Forever
Ööh... Toi oli vaan tehty esimerkkiä varten nopeesti... Se ei haittaa jos siinä on pikku virheitä...
Haluaisin että joku pystyisi tehdä siihen tuon koodin toimintaan:

Code: Select all

   nakyy = 100
    Repeat
        nakyy - 1
        If nakyy>0 Then Text 0,0,"lol"
        DrawScreen
    Forever
Sitten pikkuisen selittäisi mitenkä se toimii! En antanut sitä koodia mihin sen oikeasti sijoitan koska yritän itsekkin oppia ja sellaisesta että joku muu tekee pelini puoliksi valmiiksi niin en opi... Sori jos vähän hämäs :roll:
Älä kysy multa!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by koodaaja »

Tuotah. Tuo on wanha purkka, joka esiintyy lähes kaikissa mahdollisissa CB-tutoriaaleissa, se on FPS-riippuvainen eikä erityisen kaunis tapa ratkaista asia. Tosin se pelittää aivan hyvin. Tuo siis periaatteessa tekee laskurin, jota lasketaan pykälä joka kierroksella. Ja niin kauan kuin se on yli nollan, näytetään teksti. Toki kun ei ole mikään räiskintä, jossa jokainen toiminto on millisekunnista kiinni, niin tuo on yhtä toimiva ja selkeämpi käsittää kuin Timer(), ainakin itselleni oli ensimmäisiä projekteja väkertäessä. Eli noin se toimii (ja vielä ylimääräisellä tiedolla höystettynä)
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

koodaaja wrote:Tuotah. Tuo on wanha purkka, joka esiintyy lähes kaikissa mahdollisissa CB-tutoriaaleissa, se on FPS-riippuvainen eikä erityisen kaunis tapa ratkaista asia. Tosin se pelittää aivan hyvin. Tuo siis periaatteessa tekee laskurin, jota lasketaan pykälä joka kierroksella. Ja niin kauan kuin se on yli nollan, näytetään teksti. Toki kun ei ole mikään räiskintä, jossa jokainen toiminto on millisekunnista kiinni, niin tuo on yhtä toimiva ja selkeämpi käsittää kuin Timer(), ainakin itselleni oli ensimmäisiä projekteja väkertäessä. Eli noin se toimii (ja vielä ylimääräisellä tiedolla höystettynä)
Juu nyt ymmärsin... Mutta saanen sanoa että tuo koodi ei toimi oikein minun käyttötarkoitukseeni...
Se kyllä ajastimen kanssa näyttää tekstin ja ajastimen kanssa sen taas piilottaa...
Mutta tämä koodi kun kerran on piilottanut niin ei tuo sitä tekstiä uudestaan näkyviin...
Sillä pistän sitä sellaisiin kohtiin että: Koirasi haukkui sinulle niin tämä teksti on ajastettu joka 20 secuntti mutta jos muunnan sen tuoksi sinun koodiksesi niin se ei näytä sitä uudestaan...
Kiitos kummiskin...
Oisko mitään muuta ratkaisua?
Älä kysy multa!
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by koodaaja »

No muokkasinpa siitä sitten tuollaisen:

Code: Select all

ajastin = Timer()

Repeat
    If Timer() - ajastin < 1000 Then Text 10, 10, "Kuiva esimerkkiteksti"
    If Timer() - ajastin > 5000 Then ajastin = Timer()
    DrawScreen
Forever
Eli kun ajastin on kulkenut alle sekunnin, (1 sec = 1000 millisekuntia, Timer() siis antaa arvot millisekunteina) teksti näkyy, ja viiden sekunnin jälkeen se nollataan. Eli vastaavat arvot tapauksessasi olisivat 1000 ja 21 000, jolloin ensin näytettäisiin teksti ja odotettaisiin 20 sec, sitten teksti uudelleen jne.
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Haatsava peliprojecti(minulle) nimeltä Pet!

Post by Akatsuki »

koodaaja wrote:No muokkasinpa siitä sitten tuollaisen:

Code: Select all

ajastin = Timer()

Repeat
    If Timer() - ajastin < 1000 Then Text 10, 10, "Kuiva esimerkkiteksti"
    If Timer() - ajastin > 5000 Then ajastin = Timer()
    DrawScreen
Forever
Eli kun ajastin on kulkenut alle sekunnin, (1 sec = 1000 millisekuntia, Timer() siis antaa arvot millisekunteina) teksti näkyy, ja viiden sekunnin jälkeen se nollataan. Eli vastaavat arvot tapauksessasi olisivat 1000 ja 21 000, jolloin ensin näytettäisiin teksti ja odotettaisiin 20 sec, sitten teksti uudelleen jne.
Kiitos taas kerran :D
Nyt toimii! Kohta taas yritän jotain kysyy :roll:
Onks muuten tekstipohjainen peli helppo muuttaa kuvalliskesi?
Älä kysy multa!
Post Reply