Tyhmät kysymykset (I/2011)
Re: Tyhmät kysymykset (I/2011)
Wait-komento odottaa vain tietyn antamasi ajan ja pysäyttää ohjelman suorituksen siksi aikaa, etkä voi sen avulla toteuttaa vuoropohjaista peliä.
Yksi keino toteuttaa tuo on, että teet erillisen loopin, jossa käyttäjän syötteet luetaan ja kun tarpeeksi liikkeitä on tehty, loopista poistutaan.
Yksi keino toteuttaa tuo on, että teet erillisen loopin, jossa käyttäjän syötteet luetaan ja kun tarpeeksi liikkeitä on tehty, loopista poistutaan.
Re: Tyhmät kysymykset (I/2011)
Tyhmästä kysymyksestä ei tarvitse niinkään pahoitella, mutta "mahd. nopea vastaus" pyyntö saattaa aiheuttaa mielipahaa ("koodia tänne, ja heti!" -> "mrrrr...").jorre wrote:Eli kysyisin mitenkäs olisi mahdollista tehä vuoropohjainen coolbasic peli, tai oikeastaan miten saada Wait:tiin käsky että se odottaa että tietty luku on tietyn verran? (Onko henkilö liikkunut vai ei)
Pyytäisin mahd. nopeata vastausta, ja pahoittelen tyhmästä kysymyksestä.
Mutta asiaan:
Tutustu tutoriaaleihin ja ohjeisiin!
Tässä esimerkki ongelmasi ratkaisemisesta (aikalailla sama pätkä löytyy manuaalista kunhan viitsii lukea):
Code: Select all
If "arvo = jotakin" then
"tee jotakin"
endif
EDIT:
Äh, myöhästyin... Temu ehti ensin
Re: Tyhmät kysymykset (I/2011)
terve vaan taas. pitäs kysyy(taas) että miten luodit saa pysähtymään kartassa seiniin?
Re: Tyhmät kysymykset (I/2011)
viewtopic.php?f=10&t=1920Vieras wrote:terve vaan taas. pitäs kysyy(taas) että miten luodit saa pysähtymään kartassa seiniin?
-> kohta 5
Re: Tyhmät kysymykset (I/2011)
nyt on pakko kysyä. miksi kun ammun tietyssä kulmassa seinään niin luoti ei poistu vaan liukuu seinää pitkin.
onko koodissa sitten jokin mikä saa luodin liukumaan?
onko koodissa sitten jokin mikä saa luodin liukumaan?
Re: Tyhmät kysymykset (I/2011)
Riippuu koodista. Jos lasket lähtökulman väärin, se voi jäädä liukumaan seinään. Noin esimerkkinä. Ilman koodia on hankala kertoa, että mikä siinä on vikana.Guest wrote:nyt on pakko kysyä. miksi kun ammun tietyssä kulmassa seinään niin luoti ei poistu vaan liukuu seinää pitkin.
onko koodissa sitten jokin mikä saa luodin liukumaan?
Re: Tyhmät kysymykset (I/2011)
Veikkaisin, että olet laittanut luodille törmäystarkistuksen kartan kanssa? Todennäköisesti et kuitenkaan tee tarkistusta siitä törmäsikö luoti karttaan tai sitten siinä on jotain pielessä, joten kun törmäystarkistus on alustettu liukuvaksi, niin luoti liukuu seinää pitkin kunnes päätyy johonkin kulmaan.Vieras wrote:nyt on pakko kysyä. miksi kun ammun tietyssä kulmassa seinään niin luoti ei poistu vaan liukuu seinää pitkin.
onko koodissa sitten jokin mikä saa luodin liukumaan?
Re: Tyhmät kysymykset (I/2011)
Moro.
Elikkäs mietiskelen että miten saan kirjoitettua tekstiä tiedostoon "putkeen". Selitän esimerkillä:
Eli on merkkijono jossa lukee esim. näin: "Kirjoita testi.txt teksti Olipakerran kaksi koodaajaa"
Ja ohjelmani pikku parseri katsoo GetWord komennolla että a) kirjoitetaan jtn (1. sana) b) tiedostoon testi.txt (2. sana) c) data on tekstiä (3. sana) d) ennalta arvaamaton määrä dataa (loput sanat)
Ongelma on se että saan erotettua tiedostoon kirjoitettavat sanat, mutta sanat kirjoitetaan sinne yksitellen jolloin tiedoston sisältö näyttää tälläiseltä:
eikä tältä:
Miten siis saan yksittäiset sanat (joita on siis määrä x) samaan tekstiriviin, saman muuttujan alle jonka voi sitten nätisti kirjoittaa filuun?
Koodi joka kirjoittaa "väärin":
Elikkäs mietiskelen että miten saan kirjoitettua tekstiä tiedostoon "putkeen". Selitän esimerkillä:
Eli on merkkijono jossa lukee esim. näin: "Kirjoita testi.txt teksti Olipakerran kaksi koodaajaa"
Ja ohjelmani pikku parseri katsoo GetWord komennolla että a) kirjoitetaan jtn (1. sana) b) tiedostoon testi.txt (2. sana) c) data on tekstiä (3. sana) d) ennalta arvaamaton määrä dataa (loput sanat)
Ongelma on se että saan erotettua tiedostoon kirjoitettavat sanat, mutta sanat kirjoitetaan sinne yksitellen jolloin tiedoston sisältö näyttää tälläiseltä:
Code: Select all
Olipakerran
kaksi
koodaajaa
Code: Select all
Olipakerran kaksi koodaajaa
Koodi joka kirjoittaa "väärin":
Code: Select all
If info$ = Lower ("Txt") Then
sanat = CountWords (in$)
r = OpenToWrite (filewrite$)
For lukukerrat = 4 To sanat
Dataa$ = GetWord (in$,lukukerrat)
WriteLine r, Dataa$
Next lukukerrat
CloseFile r
commandout = "Write "+ filewrite$ +" "+ info$ +" ..."+ Dataa$
Return 1
EndIf
Re: Tyhmät kysymykset (I/2011)
Tuohon on ainakin kaksi keinoa:
1. Loopissa lisäät merkkijonoon kaikki sanat ja sitten kirjoitat tiedostoon WriteLine komennolla.
2. Käytä WriteString komentoa joka ei lisää tiedostoon tulostuksessa rivinvaihtoa perään. En muista kyllä meneekö tuo komento muuttelemaan jotain merkkejä tai kirjottelee jotain ylimäärästä.
1. Loopissa lisäät merkkijonoon kaikki sanat ja sitten kirjoitat tiedostoon WriteLine komennolla.
2. Käytä WriteString komentoa joka ei lisää tiedostoon tulostuksessa rivinvaihtoa perään. En muista kyllä meneekö tuo komento muuttelemaan jotain merkkejä tai kirjottelee jotain ylimäärästä.
Re: Tyhmät kysymykset (I/2011)
No yksi tapa on että heität kaikki nuo "rivit" johonkin taulukkoon josta luet ne yhtelle riville jonka kirjoitat writelinellä. Toinen tapa on kai käyttää WriteString:iä..Peltsi wrote:Moro.
Elikkäs mietiskelen että miten saan kirjoitettua tekstiä tiedostoon "putkeen".
Code: Select all
lk = 4
Dim rivit(lk) As String
If info$ = Lower ("Txt") Then
sanat = CountWords (in$)
r = OpenToWrite (filewrite$)
For lukukerrat = 4 To sanat
Dataa$ = GetWord (in$,lukukerrat)
rivit(lukukerrat - 4) = Dataa$
Next lukukerrat
For syottokerrat = 0 To lk - 1
rivi$ = rivit(syottokerrat)
Next syottokerrat
WriteLine r, rivi$
CloseFile r
commandout = "Write "+ filewrite$ +" "+ info$ +" ..."+ Dataa$
Return 1
EndIf
Jaha, joku ehti ensi
Re: Tyhmät kysymykset (I/2011)
Peltsi: Säädä tuo merkkijonon kirjoitus tiedostoon toimimaan yhdellä kirjoituskerralla. Kannattaa käyttää apuna Mid-funktiota, kun haluat tallentaa kaiken lopun tekstin komentojen jälkeen erilliseen muuttujaan. Selvittääksesi sen, mistä kohtaa tekstiä pitää alkaa dataa lukemaan, käytä apunasi Len-komentoa GetWordien jälkeen. Muistat vain aina lisätä siihen Len:n arvoon ykkösen ottaaksesi huomioon tekstissä olevat välilyönnit.
Koska en voi nyt testata koodia CoolBasicilla, niin tässä olisi vain pikainen kokeilematon testikoodi:
temu92:sen ja phonsin WriteString-vinkki on väärä, WriteString kirjoittaa tiedostoon ennen merkkijonoa sen merkkijonon pituuden neljään tavuun kirjoitettuna.
Koska en voi nyt testata koodia CoolBasicilla, niin tässä olisi vain pikainen kokeilematon testikoodi:
Code: Select all
sisältö$ = "Kirjoita testi.txt teksti Hei, maailma!"
loppukohta = 0
käsky$ = GetWord( sisältö, 1 ) // "Kirjoita"
loppukohta = loppukohta + Len( käsky ) + 1
tiedosto$ = GetWord( sisältö, 2 ) // "testi.txt"
loppukohta = loppukohta + Len( tiedosto ) + 1
datatyyppi$ = GetWord( sisältö, 3 ) // "teksti"
loppukohta = loppukohta + Len( datatyyppi ) + 1
loppudata$ = Mid( sisältö, loppukohta ) // "Hei, maailma!"
f = OpenToWrite( tiedosto$ )
If datatyyppi$ = "teksti" Then
WriteLine f, loppudata$
EndIf
CloseFile f
Print "Laitettiin tiedostoon '" + tiedosto$ + "' datatyyppiä '" + datatyyppi$ + "'"
Print " Sisältö oli: '" + loppudata$ + "'"
WaitKey
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset (I/2011)
Sitä mä vähän mietinkin että tekeekö se niin. No edelleen samaan merkkijonoon kirjottaminen pitäis toimia.
Re: Tyhmät kysymykset (I/2011)
Entäs jos kirjoittaisi filuun writestringillä ja lukisi sen readlinella, poistaisi 4 tavua alusta ja kirjoittaisi uudelleen wlinella?
Last edited by Peltsi on Wed Jul 13, 2011 4:21 pm, edited 1 time in total.
Re: Tyhmät kysymykset (I/2011)
Miksei vain suoraan kirjottaisi WriteLinellä? Tai lukisi ReadStringillä?Peltsi wrote:Entäs jos kirjoittaisi filuun writestringillä ja lukisi sen readlinella, poistaisi 4 tavua alusta ja kirjoittaisi uudelleen wlinella? Editoin tähän koodin jos saan onnistumaan...
Re: Tyhmät kysymykset (I/2011)
hei taas! tälläkertaa kysymykseni koskee sprinttausta.olen saanut sprintim siihen asti että tyyppi juoksee nopeammin kun painaa vasenta sprinttiä ja w:tä. sitten tulee vastaan kaksi asiaa joihin en löydä ratkaisua. miten saan sprinttaamisen kuluttamaan staminaa(stamina on koodattu objectfloatilla) ja sitten miten saa tyypin juoksemaan normaalivauhtia jos stamina = 0?
Re: Tyhmät kysymykset (I/2011)
Vieras wrote:hei taas! tälläkertaa kysymykseni koskee sprinttausta.olen saanut sprintim siihen asti että tyyppi juoksee nopeammin kun painaa vasenta sprinttiä ja w:tä. sitten tulee vastaan kaksi asiaa joihin en löydä ratkaisua. miten saan sprinttaamisen kuluttamaan staminaa(stamina on koodattu objectfloatilla) ja sitten miten saa tyypin juoksemaan normaalivauhtia jos stamina = 0?
Code: Select all
If KeyHit(jouksunappi) Then juokse
If juokse Then
ObjectFloat ukkeli,ObjectFloat(ukkeli)-1
If ObjectFloat(ukkeli) < 0 Then
ObjectFloat ukkeli,0
juokse = False
EndIf
EndIf
Re: Tyhmät kysymykset (I/2011)
Miten saan tehtyä niin että kun klikkaa esim. jotain objektia se "valitaan" ja, kun se on valittuna sitä voi liikuttaa, ja kun se ei ole "valittuna" sitä ei voi liikuttaa. Silleen niinku rts peleissä... xD
Re: Tyhmät kysymykset (I/2011)
Valitset objektin vaikka ObjectsOverlpappia käyttäen. Muutat muuttujan objektiValittu arvoa kun objekti valitaan. Jos objektiValittu <> 0, ja klikkaat johonkin päin karttaa, valittu objekti kulkee sinne (se esim. ottaa klikatun kohdan koordinaatit, kääntyy koordinaatteja kohti ja kulkee eteenpäin).
Re: Tyhmät kysymykset (I/2011)
Miten saisin pidettyä valittuna niin kauan kunnes painaa vaikka esim. mouse2?
Code: Select all
CameraPick MouseX(),MouseY()
e = PickedObject()
If e And MouseHit(1) Then
Color cbGreen
EndIf
If e Then
e = infantry
Text 340,0,"unit"
EndIf
Re: Tyhmät kysymykset (I/2011)
En oikein ymmärtänyt kysymystä, enkä koodia.
Siis valintahan on aina päällä, ettet sitä erikseen poista:
Siis valintahan on aina päällä, ettet sitä erikseen poista:
Code: Select all
If MouseHit( 1 ) And HiiriPaalla() Then valittu = 1
If MouseHit( 2 ) Then valittu = 0