Onko se nyt niin yksinkertaista? Ei taida olla minun mielestäni
No minulla olisi pari kysymystä:
-Missä vaiheessa lisätään Spritet ja Tilet?
*Tehdäänkö spritet ja tilesetit Paintilla?
*Mitä Kuvatiedostomuotoja CoolBasic tukee?
-Tekstipelin teko?
*Onko hankalaa tehdä tekstipeliä?
*Olisiko mitään esimerkkejä?
Kiitos vastauksistanne
Yksinkertaisen pelinteko?
Re: Yksinkertaisen pelinteko?
Ei, pelinteko ei todellakaan ole yksinkertaista. Tarvittavien komentojen ja funktioden käyttö, sekä ohjelman yleinen toiminta on yksinkertaista oppia. Ainoa mitä tarvitaan on paljon aikaa. Pelinteko on kuitenkin paljon muutakin kuin komentojen tietotaitoa.
Spritet ladataan cb:ssä funktiolla LoadImage(). Se on periaatteessa ihan sama milloin lataat, kunhan teet sen ennen kuin käytät itse kuvaa.
Tilemapit ladataan käyttäen funktiota LoadMap(). Tämä kannattaa tehdä ennen muiden objektien latausta, sillä kartat ovat eräänlaisia objekteja, ja koska objektit piirretään latausjärjestyksessä, saamme näin piirrettyä kartan muiden objektien alle.
Cb tukee formaatteja bmp, jpg, png ja tga. Kuvia ja tilemappeja voi tietenkin tehdä millä tahansa kuvanmuokkausohjelmalla, joka tukee jotain näistä formaateista.
Tekstipelin teko on yllättävän hankalaa, hankalanpaa cb:llä kuin esim. Qbasicilla, koska cb:n Input() ei pysäytä ohjelman suoritusta ja vaatii näin ollen silmukan. Nykyinen cb on tarkoitettu 2d-peliohjelmointiin, ja omaa siihen erittäin käytännöllisiä sisäänrakennettuja komentoja, kuten oman objektisysteemin ja type-kokoelmat.
Jos haluat aloittaa _helposta_, ja oppia ohjelmoimaan cb:llä, suosittelen käymään oppitunnit läpi (se pop-up-ikkuna kun avaa cb:n tai painaa f8). Ylhäältä kuvattu räiskintä / hippapeli on ehkä kaikista helpoin tapa aloittaa. Siihen on myös paljon esimerkkejä oppitunneissa ja manuaalissa.
Tässä ehkä yksinkertaisin tapa tehdä tekstipeli cb:llä:
Spritet ladataan cb:ssä funktiolla LoadImage(). Se on periaatteessa ihan sama milloin lataat, kunhan teet sen ennen kuin käytät itse kuvaa.
Tilemapit ladataan käyttäen funktiota LoadMap(). Tämä kannattaa tehdä ennen muiden objektien latausta, sillä kartat ovat eräänlaisia objekteja, ja koska objektit piirretään latausjärjestyksessä, saamme näin piirrettyä kartan muiden objektien alle.
Cb tukee formaatteja bmp, jpg, png ja tga. Kuvia ja tilemappeja voi tietenkin tehdä millä tahansa kuvanmuokkausohjelmalla, joka tukee jotain näistä formaateista.
Tekstipelin teko on yllättävän hankalaa, hankalanpaa cb:llä kuin esim. Qbasicilla, koska cb:n Input() ei pysäytä ohjelman suoritusta ja vaatii näin ollen silmukan. Nykyinen cb on tarkoitettu 2d-peliohjelmointiin, ja omaa siihen erittäin käytännöllisiä sisäänrakennettuja komentoja, kuten oman objektisysteemin ja type-kokoelmat.
Jos haluat aloittaa _helposta_, ja oppia ohjelmoimaan cb:llä, suosittelen käymään oppitunnit läpi (se pop-up-ikkuna kun avaa cb:n tai painaa f8). Ylhäältä kuvattu räiskintä / hippapeli on ehkä kaikista helpoin tapa aloittaa. Siihen on myös paljon esimerkkejä oppitunneissa ja manuaalissa.
Tässä ehkä yksinkertaisin tapa tehdä tekstipeli cb:llä:
Code: Select all
alku:
CloseInput()
Repeat
Text 20, 20, "Olet sisällä."
Text 20, 40, "1) Mene pihalle"
Text 20, 60, "2) Katso televisiota"
txt$ = Input( ": " )
If KeyHit( CbKeyReturn ) Then
If txt = "1" Then Goto piha
If txt = "2" Then Goto tv
EndIf
DrawScreen
Forever
piha:
CloseInput()
Repeat
Text 20, 20, "Olet pihalla..."
Text 20, 40, "1) Mene takaisin sisälle"
txt$ = Input( ": " )
If KeyHit( CbKeyReturn ) Then
If txt = "1" Then Goto alku
EndIf
DrawScreen
Forever
tv:
Cls
Text 20, 20, "Tv:stä ei tule mitään..."
DrawScreen
Wait 2000
Goto alku
Re: Yksinkertaisen pelinteko?
Luin jo kattavan Manuaalin ja se no... auttoi hieman.
Pitää kai lukea tarkemmin.
Pitää kai lukea tarkemmin.
-
- Active Member
- Posts: 170
- Joined: Mon Jun 23, 2008 9:04 pm
Re: Yksinkertaisen pelinteko?
Itse olen tehnyt tekstipelejä tällä tavoin:
Mielestäni mukavampi tapa verrattuna input/goto-sähellykseen. Tosin pelistä tulee helposti sekava ellei vähän ajattele ja suunnittele, mutta onneksi kommentit ovat ystäviäsi
Code: Select all
'ei mitenkään pakollinen tapa toteuttaa rivinvaihtoa
tekstirivi = TextHeight ("") + 2
Repeat
Select paikka
'alku
Case 0
Text 10,tekstirivi,"Olet alussa."
Text 10,tekstirivi*2,"Et halua olla tässä, menet muualla (1)"
If KeyHit (cbkey1) Then paikka = 1
Case 1 ' tänne tulit alun jälkeen
Text 10,tekstirivi,"Tulit olohuoneeseen. Sinun on nälkä."
Text 10,tekstirivi*2,"Mietit mistä hakea ruokaa."
Text 10,tekstirivi*5,"Ullakolta (1)"
Text 10,tekstirivi*6,"Eteisestä (2)"
Text 10,tekstirivi*7,"Jääkaapista (3)"
If KeyHit (cbkey1) Then paikka = 2
If KeyHit (cbkey2) Then paikka = 3
If KeyHit (cbkey3) Then paikka = 4
Case 2 ' menet ullakolle hakemaan ruokaa
Text 10,tekstirivi*2,"Kapuat pölyiselle ullakolle. Lyöt varpaasi"
Text 10,tekstirivi*3,"laatikkoon. Huudat sen takia, mutta avaat sen."
Text 10,tekstirivi*4,"Lootasta löytyy säilykkeen. Vuodelta ennen sotia."
Text 10,tekstirivi*5,"Ei näitä voi syödä, palaa takaisin. (1) "
If KeyHit (cbkey1) Then paikka = 1
Case 3 ' menet eteiseen hakemaan ruokaa
Text 10,tekstirivi*2,"Eteisestä löytyy vain perheesi vanha koira."
Text 10,tekstirivi*3,"Päässäsi napsahtaa. Katsot koiraasi oudosti."
Text 10,tekstirivi*4,"Kyllästyt siihen ja menet jääkaapille. (1)"
If KeyHit (cbkey1) Then paikka = 4
Case 4 'menet jääkaapille
Text 10,tekstirivi*2,"Haet jääkaapista ruokaa. Siellä on makkaraa"
Text 10,tekstirivi*3,"ja olutta. Mitä päätät ottaa jääkaapista?"
Text 10,tekstirivi*5,"Makkaraa (1)"
Text 10,tekstirivi*6,"Olutta (2)"
If KeyHit (cbkey1) Then
paikka = 5
ClearKeys ' getkey() takia seuraavas paikas
EndIf
If KeyHit (cbkey2) Then
paikka = 6
lopetusaika = Timer ()
EndIf
Case 5 'syö makkaraa
Text 10,tekstirivi*2,"Koska makkara on hyvää ja päätit syödä sitä,"
Text 10,tekstirivi*3,"pääsit pelin läpi!"
Text 10,tekstirivi*4,"Lopeta peli painamalla mitä tahansa näppäintä."
If GetKey () Then End
Case 6' juot olutta
Text 10,tekstirivi*2,"Jaa, no käy se näinkin. Pääsit pelin läpi."
If Timer () > lopetusaika + 3000 Then End
EndSelect
DrawScreen
Forever
Väsyttää niin ettei jaksa edes mennä lepäämään.