Re: Tyhmät kysymykset (II/2009)
Posted: Fri Jul 10, 2009 6:16 pm
Saapas? Minulla ainaki toimii .Feuer wrote:Readlinellä ei saa tietääkseni luettua yhtä riviä yhteen muuttujaan...
Game Making Should Be Easy...
https://www.coolbasic.com/phpBB3/
Saapas? Minulla ainaki toimii .Feuer wrote:Readlinellä ei saa tietääkseni luettua yhtä riviä yhteen muuttujaan...
Olen aloittelija enkä tajua mistään mitään, eli toisin sanoen?DatsuniG wrote:Koska ehtolauseke ei ole loopissa ; )Sceri wrote:Eli kysymys olisi että miksi tuo teksti ei näy kun painaa start?
Code: Select all
ClsColor cbwhite 'Taustavari valkoiseksi Repeat If painike(30,40,"Start") Then Goto aloita 'Esimerkki toiminnasta DrawScreen Forever '------------ 'FUNKTIO '------------ Function painike(reunaX,reunaY,txt$) clr=1 'Clr on 1 x = TextWidth(txt$) y = TextHeight(txt$) Color 0,175,22 If MouseX()<reunaX+x+6 And MouseX()>reunaX And MouseY()<reunaY+y+6 And MouseY()>reunaY Then If MouseHit(1) Then paalla=True If clr=1 Then Color 55,254,23 Else paalla=False EndIf 'Lopetetaan if -lause Box reunaX,reunaY,x+6,y+6 ,ON 'Laatikko Color cbblack Box reunaX,reunaY,x+6,y+6,OFF 'Reunat laatikolle Text reunaX+3,reunaY+3,txt$ 'Teksti toimimaan oikealle kohdalle Return paalla 'Palauttaa arvon End Function 'Lopetetaan funktio aloita: FrameLimit 100 AddText "Poista teksti painamalla s" If KeyHit(cbkeys) Then ClearText lehmä = LoadObject ("Media\cow.bmp",72) Repeat If LeftKey() Then TurnObject lehmä, 5 If RightKey() Then TurnObject lehmä, -5 If UpKey() Then MoveObject lehmä, 2 If DownKey() Then MoveObject lehmä, -2 DrawScreen Forever
Ei se mistään ehtolauseista johdu. Se johtuu siitä, että yrität piirtää mustaa tekstiä mustalle taustalle, ja silloin ei tietenkään näy yhtään mitään.Sceri wrote:Olen aloittelija enkä tajua mistään mitään, eli toisin sanoen?DatsuniG wrote:Koska ehtolauseke ei ole loopissa ; )Sceri wrote:Eli kysymys olisi että miksi tuo teksti ei näy kun painaa start?
Code: Select all
ClsColor cbwhite 'Taustavari valkoiseksi Repeat If painike(30,40,"Start") Then Goto aloita 'Esimerkki toiminnasta DrawScreen Forever '------------ 'FUNKTIO '------------ Function painike(reunaX,reunaY,txt$) clr=1 'Clr on 1 x = TextWidth(txt$) y = TextHeight(txt$) Color 0,175,22 If MouseX()<reunaX+x+6 And MouseX()>reunaX And MouseY()<reunaY+y+6 And MouseY()>reunaY Then If MouseHit(1) Then paalla=True If clr=1 Then Color 55,254,23 Else paalla=False EndIf 'Lopetetaan if -lause Box reunaX,reunaY,x+6,y+6 ,ON 'Laatikko Color cbblack Box reunaX,reunaY,x+6,y+6,OFF 'Reunat laatikolle Text reunaX+3,reunaY+3,txt$ 'Teksti toimimaan oikealle kohdalle Return paalla 'Palauttaa arvon End Function 'Lopetetaan funktio aloita: FrameLimit 100 AddText "Poista teksti painamalla s" If KeyHit(cbkeys) Then ClearText lehmä = LoadObject ("Media\cow.bmp",72) Repeat If LeftKey() Then TurnObject lehmä, 5 If RightKey() Then TurnObject lehmä, -5 If UpKey() Then MoveObject lehmä, 2 If DownKey() Then MoveObject lehmä, -2 DrawScreen Forever
Koitin laittaa If KeyHit(cbkeys) Then ClearText repeatin alle mutta ei toiminu...
Joku ihme CB-bugi, kyllähän siellä alussa koodia on "ClsColor cbWhite" mutta jostain syystä se ei enää ole toiminnassa Goto:n jälkeen. Vaihdappas siis taustan väriä ClsColor-komennolla tai tekstin väriä Color-komennolla ennen kuin alat tekstiä lisäilemään näytölle.Chaosworm wrote:Ei se mistään ehtolauseista johdu. Se johtuu siitä, että yrität piirtää mustaa tekstiä mustalle taustalle, ja silloin ei tietenkään näy yhtään mitään.Sceri wrote:Olen aloittelija enkä tajua mistään mitään, eli toisin sanoen?
Koitin laittaa If KeyHit(cbkeys) Then ClearText repeatin alle mutta ei toiminu...
Jaa... Täytynee kokeilla. Mikä OS on käytössäsi...? Vistalla esiintyy itselläni paljon bugeja CB-ohjelmissa, joita ei esiinny kun kys. ohjelmia ajaa Win2000RC2 - virtuaaliympäristössä.KilledWhale wrote:Readline lukee suoraan yhden rivin tiedostosta ja kyllä sen ainakin minulla voi muuttujaan lukea. Itsellä tuo sinun readconfig hässäkkäsi toimi niinkuin pitikin.
Tässä vielä muutama funktio ini-tiedostojen lukuun jos vaikka näillä toimisi:
http://cbkk.systec.fi/koodi.php?id=213
rivi$=Readline(tiedostonimi) -> kielioppivirse, kun taas rivi$=readconfig(Tiedostonimi$, otsikko$) -> Toimii
Code: Select all
kartta = LoadMap("grafiikat/gym.til", "grafiikat/tileset.bmp")//ilkeä
ukko = LoadObject("grafiikat/hahmo_1.bmp",72)
ohjaaja = LoadObject("grafiikat/hahmo_1.bmp",72)//ilkeä
paino_penkki = LoadObject("grafiikat/paino_penkki.bmp",72)//ilkeä
SetupCollision ukko, kartta, 1, 4, 2
Tuo funktio on loistava Mutta en löydä/osaa koodata "Lohkoja tukevaa ini-kirjoitusfunktiota".KilledWhale wrote:Readline lukee suoraan yhden rivin tiedostosta ja kyllä sen ainakin minulla voi muuttujaan lukea. Itsellä tuo sinun readconfig hässäkkäsi toimi niinkuin pitikin.
Tässä vielä muutama funktio ini-tiedostojen lukuun jos vaikka näillä toimisi:
http://cbkk.systec.fi/koodi.php?id=213
Ohhoh, sitä ei kai CB:llä voi, tai ehkä järjestelmärekistereitä sörkkimällä, kun niillä saa kerta päivämäärän ulsokin, tosin se on niin vaarallista touhua, että ei kannata, saat vielä koko koneesi sekasin. Tosin en ole silti varma mistään, mutta jos ei rekistereillä niin ei sitten kyllä millään..KoviZ wrote:Voiko coolbasicilla, muuttaa tietokoneen päivämäärää?
Voit kutsua windowsin komentoriviä /c-lipulla ja antaa sille parametriksi date-komennon, jolle annat parametriksi uuden päivämäärän.KoviZ wrote:Voiko coolbasicilla, muuttaa tietokoneen päivämäärää?
Code: Select all
Execute "cmd /c " + Chr(34) + "date 13.7.2009" + Chr(34)
Jotenkin tähän tyyliin. En ehtinyt testata mutta kääntyi ainakin.Feuer wrote:Hitto ku ei suju... Miten saan tarkistettua kahden [tekstiä$] -lohkon välisen rivimäärän tiedostosta...?
Code: Select all
f = OpenToRead("filu.txt")
countLines = False // Lasketaanko nykyinen rivi
While Not EOF(f) // Käydään koko tiedosto läpi
r$ = ReadLine(f) // Luetaan rivi
r$ = Trim(r$) // Poistetaan rivin alusta ylimääräiset rivivälit ja sarkaimet
If r$ = "[tekstiä]" Then
countLines = Not countLines // Jos countLines = True niin muutetaan se falseksi ja päin vastoin
Else
If countLines Then // Jos laskuri ON päällä kasvatetaan muuttujan arvoa
count = count + 1
EndIf
EndIf
Wend
CloseFile f
Print count
WaitKey
Animaatiohan tehdään niin, että piirretään Paintilla .png, .jpg tai .bmp -muotoon kuva, jossa on kaikki animaation framet peräkkäin ja niitä sitten käytellään kirjoittamalla komentoja CoolBasicin editoriin.matti3 wrote:Totaa...
Tein hahmosta animaation, mutta tuli ongelma. Mahdolliset tallennusmuodot ovat vain. .gif .avi yms mitä CoolBasic ei tue, joten se ei löydä animaatiotani.
Kysymys on. Tietääkö ketään animaatio ohjelmaa missä saa tallennettua .bmp tai .jpg tai muuhun CoolBasicin tukemaan muotoon?
Ainakin voit muuttaa objectit näkymättömiksi ShowObject-komennolla. Silloin ne eivät edes osallistu törmäystunnistuksiin tai mihinkään semmosiin ja pelin nopeus ei tipu.matti3 wrote: Ja samaan kysymykseen liittyy
Miten tähän muistivaraukseen voi liittää kuvan? Ajattelin, että helpotan ohjelmaa niin, että nuo useat objectit tuhotaan, kun niitä ei näy, mutta jätetään muistin varaukseen ja taas saapuessa takaisin tilaan jossa hahmot näkyvät niin ne luetaan sieltä nopeasti, joten ei tarvitse ladata graffoja uudestaan. Tällä hetkellä on 12 eri esinettä joten voin sanoa, että lataus kestää kauan ja jos vain piilotan objectit niin nehän jää taustalle joten muodostuu ongelmaksi se, että se hidastaa peliä. Siis esineistä vasta noin puolet on tehty, objecteja tulee vielä paljon lisää.
Code: Select all
start = Timer()
Repeat
Text 0,0,((Timer()-start)/3600000)+":"+(((Timer()-start)/60000) Mod 60)+":"+((Timer()-start)/1000 Mod 60)
DrawScreen
Forever
Code: Select all
SCREEN 300,300
Dim Ruudukko(2,2) As integer, Vuoro As Integer
Repeat
For a = 0 To 2
For i = 0 To 2
Box i * ScreenWidth() / 3, a * ScreenHeight() / 3, ScreenWidth() / 3, ScreenHeight() / 3, 0
If MouseX() > i * ScreenWidth() / 3 And MouseX() < (i + 1) * ScreenWidth() / 3 And MouseY() > a * ScreenHeight() / 3 And MouseY() < (a + 1) * ScreenHeight() / 3 And MouseHit(1) And Ruudukko(i,a) = 0 Then
Ruudukko(i,a) = vuoro + 1
vuoro = Not vuoro
ElseIf ruudukko(i,a) = 1 Then
Ellipse i * ScreenWidth() / 3, a * ScreenHeight() / 3, ScreenWidth() / 3, ScreenHeight() / 3,0
ElseIf ruudukko(i,a) = 2 Then
Line i * ScreenWidth() / 3, a * ScreenHeight() / 3, (i + 1) * ScreenWidth() / 3 , (a + 1) * ScreenHeight() / 3
Line (i + 1) * ScreenWidth() / 3 , a * ScreenHeight() / 3 , i * ScreenWidth() / 3 , (a + 1) * ScreenHeight() / 3
EndIf
If Ruudukko(a,0) = (Not vuoro) + 1 And Ruudukko(a,1) = (Not vuoro) + 1 And Ruudukko(a,2) = (Not vuoro) + 1 Or Ruudukko(0,i) = (Not vuoro) + 1 And Ruudukko(1,i) = (Not vuoro) + 1 And Ruudukko(2,i) = (Not vuoro) + 1 Or Ruudukko(0,0) = (Not vuoro) + 1 And Ruudukko(1,1) = (Not vuoro) + 1 And Ruudukko(2,2) = (Not vuoro) + 1 Or Ruudukko(2,0) = (Not vuoro) + 1 And Ruudukko(1,1) = (Not vuoro) + 1 And Ruudukko(0,2) = (Not vuoro) + 1 Then MakeError Chr(79 + (Not vuoro) * 9) + " voitti!"
Next i
Next a
DrawScreen
Forever