Re: Tyhmät kysymykset
Posted: Sat Jan 24, 2009 12:31 pm
Toivoisin vastausta kysymykseeni... Miksi ampuminen mavittaa?
Game Making Should Be Easy...
https://www.coolbasic.com/phpBB3/
Johtuu siitä, että kun valikossa hyppäät gotolla themaingame-kohtaan ja skippaat mm. konekivaarintehot-muuttujan alustuksen ykköseksi, tämän takia uusAmmus\obj-muuttujaa ei koskaan luodakaan, mutta sitä yritetään kuitenkin sijoittaa heebon kohdalle.Chaosworm wrote:Weird. Toimi ihan hyvin ennen kun aloin sähläämään tuon valikon kanssa.
KeyDown() ja KeyHit()Character wrote:Miten tehtävän b5 voisi toteuttaa?
Tässä esimerkki, mutta en keksinyt miten saisi aloitettua uuden rivin tekstitiedostossakysymys wrote:Kuinka saisin jatkettua tekstitiedostoon kirjoittamista samasta kohdasta, kun se sulkemisen jälkeen jäi?
Joudun kirjoittamaan writeline-komennolla tietoja tekstifileen, joten minulla tulee vähäsen hankaluuksia seekfile-komennon kanssa.
Toivoisin esimerkkiä asiasta
Code: Select all
AddText "Kirjoita rivi: "
Repeat
Repeat
Locate 10,30
txt$=Input(">>")
DrawScreen
Until KeyHit(28)
CloseInput
f=OpenToEdit("testetstes.txt")
SeekFile f, paikka
WriteLine f,txt$
paikka=paikka+Len(txt$)+1
CloseFile f
Forever
Uusi rivi käyttää kaksi kirjainta (ASCII 10 ja 13), joten tuossa koodissasi kun lisäät "paikka"-muuttujaan tekstin pituuden ja yhden lisää, menet metsään, kun siihen pitäisi lisätä kaksi yhden sijaan. Eli näin:Jonhu wrote:Tässä esimerkki, mutta en keksinyt miten saisi aloitettua uuden rivin tekstitiedostossakysymys wrote:Kuinka saisin jatkettua tekstitiedostoon kirjoittamista samasta kohdasta, kun se sulkemisen jälkeen jäi?
Joudun kirjoittamaan writeline-komennolla tietoja tekstifileen, joten minulla tulee vähäsen hankaluuksia seekfile-komennon kanssa.
Toivoisin esimerkkiä asiasta
Code: Select all
AddText "Kirjoita rivi: " Repeat Repeat Locate 10,30 txt$=Input(">>") DrawScreen Until KeyHit(28) CloseInput f=OpenToEdit("testetstes.txt") SeekFile f, paikka WriteLine f,txt$ paikka=paikka+Len(txt$)+1 CloseFile f Forever
Code: Select all
AddText "Kirjoita rivi: "
Repeat
Repeat
Locate 10,30
txt$=Input(">>")
DrawScreen
Until KeyHit(28)
CloseInput
f=OpenToEdit("testetstes.txt")
SeekFile f, paikka
WriteLine f,txt$
paikka=paikka+Len(txt$)+2 // <---
CloseFile f
Forever
Code: Select all
t=True
Repeat
If t=True Then
Text 0,0,"Moi."
EndIf
If KeyHit(cbkeyspace) And t=True Then t=False
If KeyHit(cbkeyspace) And t=False Then t=True
DrawScreen
Until EscapeKey()
Kun käytät text komentoa se pyyhkityy automaattisesti heti ruudun päivityksen jälkeen (poikkeuksena drawscreen OFF)jesperx96 wrote:Tämä on kyllä hyyyyyyyvin tyhmä kysymys, mutta miten Textillä kirjoitetun tekstin voi pyyhkiä? En löytänyt manuaalista. Voiko sitä pyyhkiä?
Code: Select all
AddText "tämä teksti pyyhkiytyy vain cleartext- komennolla" ' kirjotetaan teksitiä
AddText "paina mitätahansa nappia jatkaaksesi -->"
DrawScreen ' piirretään näyttö
WaitKey ' odotetaan napin painoa
ClearText ' pyyhitään addtextin teksti
paalla = ON ' asetetaan paalla aluksi päälle
Repeat ' pyöritetään silmukkaa niin kauan kunnes ehto täyttyy...
If KeyHit(28) Then paalla=Not paalla ' entteriä painettaessa paalla on eri kuin kaikaisemmin
' kirjoitetaan teksti paikkaan 10,10, vain kun paalla = 1
If paalla = ON Then Text 10,10, "Paina entter, niin tätä tekstiä ei piirretä"
DrawScreen ' piirretään näyttö
Until EscapeKey()' kunnes painetaan ESCiä
1) Muistaakseni pari sataa, jonka pitäisi riittää, vaikka ryhtyisit tekemään verkkopeliä.Vieras wrote:Oletetaan että teen suuren mittakaavan pelin, jossa (joudun) käytän hurjan määrän muuttujia, tässä muutama kysymys niihin liittyen.
1) Onko CoolBasicissa mitään rajaa kuinka monta muuttujaa voi ohjelmassa olla käytettynä?
2) Lue tarkasti: Jos ohjelmassa on vaikka yli 1000 muuttujaa (jos edes voi olla), niin voiko niitä muuttuja jotenkin poistaa ohjelman käytöstä ja ladata myöhemmin ne muuttujat osina ohjelmaan?
Niin että ensin ohjelmassa itsessään on vaikka 1000 muuttujaa aina käytössä, mutta sitten kun mennään taistelutoimintoon ja jossa ladataan lisää muuttujia peliin (include toiminnolla, onko paras keino?), niin voiko taistelun jälkeen juuri taisteluun ladatut muuttujat jotenkin poistaa käytöstä?
Että siis aluksi on 1000 muuttujaa ohjelmassa, taisteluun mennessä lisätään esimerkiksi 50 muuttujaa include-toiminnolla ja sitten taistelun jälkeen poistetaan käytöstä ne 50 muuttujaa, mutta voiko ne taistelutoiminnon muuttujat sitten ladata taas uudelleen seuraavaa taistelu hetkeä varten? Eli voisiko tällä tavalla tehdä teoriassa loputtoman määrän muuttujia peliin?
3) Kannattaako tietoja tallentaa ylipäätään hirveää määrää muuttujiin? Jos ei niin mihin sitten?
Kiitos paljon vastauksista näin etukäteen!
Jos paljon muuttujia haluaa, niin se kannattaa toteuttaa taulukoilla.Vieras wrote:Oletetaan että teen suuren mittakaavan pelin, jossa (joudun) käytän hurjan määrän muuttujia, tässä muutama kysymys niihin liittyen.
1) Onko CoolBasicissa mitään rajaa kuinka monta muuttujaa voi ohjelmassa olla käytettynä?
2) Lue tarkasti: Jos ohjelmassa on vaikka yli 1000 muuttujaa (jos edes voi olla), niin voiko niitä muuttuja jotenkin poistaa ohjelman käytöstä ja ladata myöhemmin ne muuttujat osina ohjelmaan?
Niin että ensin ohjelmassa itsessään on vaikka 1000 muuttujaa aina käytössä, mutta sitten kun mennään taistelutoimintoon ja jossa ladataan lisää muuttujia peliin (include toiminnolla, onko paras keino?), niin voiko taistelun jälkeen juuri taisteluun ladatut muuttujat jotenkin poistaa käytöstä?
Että siis aluksi on 1000 muuttujaa ohjelmassa, taisteluun mennessä lisätään esimerkiksi 50 muuttujaa include-toiminnolla ja sitten taistelun jälkeen poistetaan käytöstä ne 50 muuttujaa, mutta voiko ne taistelutoiminnon muuttujat sitten ladata taas uudelleen seuraavaa taistelu hetkeä varten? Eli voisiko tällä tavalla tehdä teoriassa loputtoman määrän muuttujia peliin?
2) Kannattaako tietoja tallentaa ylipäätään hirveää määrää muuttujiin? Jos ei niin mihin sitten?
Kiitos paljon vastauksista näin etukäteen!
Code: Select all
Repeat
Text 0,0, "Level: Ending Boss"
Text 0,14, "Health: "+health
Text 0, 28, "Boss Health: "+scienthealth
Text 0, 42, "Weapon: Laser"
Text 0, 56, "Music playing: Ekso - Dreamcrusher" '@ Harakka - kai tätä saa käyttää? Luin foorumeilta kun annoit jonkun toisen käyttää Ekson kappaleita ja ajattelin että itsekin saan...
PositionObject hiiri, MouseWX(), MouseWY()
If movement<3 Then
PointObject heebo, hiiri
EndIf
PointObject scient,heebo
heebonvauhti=3
bulletspeed=20
If movement=1 Then
If KeyDown(cbkeyw) Then TranslateObject heebo,0,heebonvauhti
If KeyDown(cbkeys) Then TranslateObject heebo,0,-heebonvauhti
If KeyDown(cbkeya) Then TranslateObject heebo,-heebonvauhti,0
If KeyDown(cbkeyd) Then TranslateObject heebo,heebonvauhti,0
EndIf
If movement=2 Then
If KeyDown(cbkeyw) Then MoveObject heebo, heebonvauhti
If KeyDown(cbkeys) Then MoveObject heebo, -heebonvauhti
If KeyDown(cbkeya) Then MoveObject heebo, 0, -heebonvauhti
If KeyDown(cbkeyd) Then MoveObject heebo, 0, heebonvauhti
EndIf
If movement=3 Then
If KeyDown(cbkeyw) Then MoveObject heebo, heebonvauhti
If KeyDown(cbkeys) Then MoveObject heebo, -heebonvauhti
If KeyDown(cbkeya) Then TurnObject heebo, -heebonvauhti
If KeyDown(cbkeyd) Then TurnObject heebo, heebonvauhti
EndIf
If ObjectX(heebo) <-320 Then PositionObject heebo, 319, ObjectY(heebo)
If ObjectX(heebo) >320 Then PositionObject heebo, -319, ObjectY(heebo)
If ObjectY(heebo) <-320 Then PositionObject heebo, ObjectX(heebo), 319
If ObjectY(heebo) >320 Then PositionObject heebo, ObjectX(heebo), -319
If MouseDown(1) And reload < 1 And gamestyle=1 Then
uusAmmus.AMMUKSET= New(AMMUKSET)
uusAmmus\obj=CloneObject(ammus2)
CloneObjectPosition uusAmmus\obj, heebo
CloneObjectOrientation uusAmmus\obj, heebo
MoveObject uusAmmus\obj, 24
If Konekivaarintehot=2 Then
PlaySound lcannon, 20
Else
PlaySound mgun, 40
reload=reload+5
Bullets=Bullets-1
EndIf
EndIf
If scientistshoot=0 Then
newAmmus.AMMUKSET= New(AMMUKSET)
newAmmus\obj=CloneObject(ammus2)
CloneObjectPosition newAmmus\obj, scient
CloneObjectOrientation newAmmus\obj, scient
MoveObject newAmmus\obj, 24
PlaySound lcannon, 20
scientistshoot=3
EndIf
reload=reload-3
If reload<0 Then reload=0
scientistshoot=scientistshoot-1
If scientistshoot<0 Then scientistshoot=0
'Update bullwts
For iAmmus.AMMUKSET= Each AMMUKSET
MoveObject iAmmus\obj,bulletspeed
If Distance2 (iAmmus\obj, heebo) > 800 Then
DeleteObject iAmmus\obj
Delete iAmmus
EndIf
If ObjectsOverlap (iAmmus\obj, heebo) Then health=health-10
If ObjectsOverlap (iAmmus\obj, scient) Then scienthealth=scienthealth-1
i=i+1
Next iAmmus
If health<1 Then Goto ending
If scienthealth<1 Then Goto winning
DrawScreen
Forever
Code: Select all
Type AMMUKSET
Field obj
EndType
heebonvauhti=3
bulletspeed=20
heebo=LoadObject("media\soldier.bmp",72)
ammus2=LoadObject("media\bullet.bmp")
hiiri=LoadObject("media\cursor.bmp")
scient=LoadObject("media\guy.bmp",72)
'LoadSound( "Media\SK_Battle2.mp3")
mgun=LoadSound("Media\Blaster.wav")
lcannon=LoadSound("Media\Blaster.wav")
health=10000
scienthealth=10000
ShowMouse OFF
movement=1
gamestyle=1
Repeat
Text 0,0, "Level: Ending Boss"
Text 0,14, "Health: "+health
Text 0, 28, "Boss Health: "+scienthealth
Text 0, 42, "Weapon: Laser"
Text 0, 56, "Music playing: Ekso - Dreamcrusher" '@ Harakka - kai tätä saa käyttää? Luin foorumeilta kun annoit jonkun toisen käyttää Ekson kappaleita ja ajattelin että itsekin saan...
PositionObject hiiri, MouseWX(), MouseWY()
If movement<3 Then PointObject heebo, hiiri
PointObject scient,heebo
If movement=1
If KeyDown(cbkeyw) Then MoveObject heebo,heebonvauhti
If KeyDown(cbkeys) Then MoveObject heebo,-heebonvauhti
// objecti osoittaa hiireen, jolloin sivuttaisuunnan liikkeestä ei ole hyötyä
' If KeyDown(cbkeya) Then TurnObject heebo,-heebonvauhti
' If KeyDown(cbkeyd) Then TurnObject heebo,heebonvauhti
EndIf
If ObjectX(heebo) <-320 Then PositionObject heebo, 319, ObjectY(heebo)
If ObjectX(heebo) >320 Then PositionObject heebo, -319, ObjectY(heebo)
If ObjectY(heebo) <-320 Then PositionObject heebo, ObjectX(heebo), 319
If ObjectY(heebo) >320 Then PositionObject heebo, ObjectX(heebo), -319
If MouseDown(1) And reload < 1 And gamestyle=1 Then
uusAmmus.AMMUKSET= New(AMMUKSET)
uusAmmus\obj=CloneObject(ammus2)
CloneObjectPosition uusAmmus\obj, heebo
CloneObjectOrientation uusAmmus\obj, heebo
MoveObject uusAmmus\obj, 24
If Konekivaarintehot=2 Then
PlaySound lcannon, 20
Else
PlaySound mgun, 40
reload=reload+20
Bullets=Bullets-1
EndIf
EndIf
If scientistshoot=0 And reload2 < 1 Then
newAmmus.AMMUKSET= New(AMMUKSET)
newAmmus\obj=CloneObject(ammus2)
CloneObjectPosition newAmmus\obj, scient
CloneObjectOrientation newAmmus\obj, scient
MoveObject newAmmus\obj, 24
PlaySound lcannon, 20
scientistshoot=3
reload2+50
EndIf
If reload2>0 Then reload2=reload2-3 // Toinenkin ukko tarvitsee reloadin mieluiten tekisit typeillä
If reload2<0 Then reload2=0
If reload>0 Then reload=reload-3 // vähennetään vain kun on reloadia..
If reload<0 Then reload=0
scientistshoot=scientistshoot-1
If scientistshoot<0 Then scientistshoot=0
'Update bullwts
For iAmmus.AMMUKSET= Each AMMUKSET
MoveObject iAmmus\obj,bulletspeed
If Distance2 (iAmmus\obj, heebo) > 800 Then delet=ON
If ObjectsOverlap (iAmmus\obj, heebo) Then health=health-10 Then delet=ON
If ObjectsOverlap (iAmmus\obj, scient) Then scienthealth=scienthealth-1 Then delet=ON
//POISTETAAN KAIKKISTA SYISTÄ KERRALLA OBJEKTIT
If delet=ON
DeleteObject iAmmus\obj
Delete iAmmus
delet=OFF
EndIf
i=i+1
Next iAmmus
If health<1 Then Goto ending
If scienthealth<1 Then Goto winning
DrawScreen
Forever
ending:
winning:
Ei mitään sain ratkaistua itse.