Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by temu92 »

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.
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Tyhmät kysymykset (I/2011)

Post by Peltsi »

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ä.
Tyhmästä kysymyksestä ei tarvitse niinkään pahoitella, mutta "mahd. nopea vastaus" pyyntö saattaa aiheuttaa mielipahaa ("koodia tänne, ja heti!" -> "mrrrr...").

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
Eli uskoisin että ongelma ratkeaa If lauseilla. Enempää en kerro, loput komennot yms. löydät manuaalista. ;)
EDIT:

Äh, myöhästyin... Temu ehti ensin :P

Guest

Re: Tyhmät kysymykset (I/2011)

Post by Guest »

terve vaan taas. pitäs kysyy(taas) että miten luodit saa pysähtymään kartassa seiniin?
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post by Awaclus »

Vieras wrote:terve vaan taas. pitäs kysyy(taas) että miten luodit saa pysähtymään kartassa seiniin?
viewtopic.php?f=10&t=1920
-> kohta 5
Guest

Re: Tyhmät kysymykset (I/2011)

Post by Guest »

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?
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Pettis »

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?
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.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 »

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?
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.
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Tyhmät kysymykset (I/2011)

Post by Peltsi »

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ä:

Code: Select all

Olipakerran
kaksi
koodaajaa
eikä tältä:

Code: Select all

Olipakerran kaksi koodaajaa
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":

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
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by temu92 »

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ä.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (I/2011)

Post by phons »

Peltsi wrote:Moro.
Elikkäs mietiskelen että miten saan kirjoitettua tekstiä tiedostoon "putkeen".
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ä..

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
Tuossa siis ykkönen, en tiiä toimiiko ku naputtelin suoraa foorumiin..
Jaha, joku ehti ensi
Image
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion »

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:

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 
temu92:sen ja phonsin WriteString-vinkki on väärä, WriteString kirjoittaa tiedostoon ennen merkkijonoa sen merkkijonon pituuden neljään tavuun kirjoitettuna.
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
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by temu92 »

Sitä mä vähän mietinkin että tekeekö se niin. No edelleen samaan merkkijonoon kirjottaminen pitäis toimia.
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Tyhmät kysymykset (I/2011)

Post by Peltsi »

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.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2011)

Post by Sly_Jack0 »

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...
Miksei vain suoraan kirjottaisi WriteLinellä? Tai lukisi ReadStringillä?
Guest

Re: Tyhmät kysymykset (I/2011)

Post by Guest »

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?
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 »

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
Tuollaillahan tuo onnistuisi, mutta tuskin sinun kannattaa tallentaa ObjectFloatiin staminaa... Mielummin tee muuttuja sitä varten, se on helpompaa ja nopeampaa.
Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen »

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
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2011)

Post by Jonez »

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).
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Ihminen
Newcomer
Posts: 34
Joined: Tue Jun 14, 2011 9:13 pm

Re: Tyhmät kysymykset (I/2011)

Post by Ihminen »

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
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2011)

Post by Jonez »

En oikein ymmärtänyt kysymystä, enkä koodia.

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
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Locked