Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
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 » Mon Jul 11, 2011 12:31 am

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 » Mon Jul 11, 2011 12:42 am

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 » Mon Jul 11, 2011 10:53 am

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 » Mon Jul 11, 2011 11:53 am

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 » Mon Jul 11, 2011 3:16 pm

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?

User avatar
Pettis
The Evil Admin
The Evil Admin
Posts: 1042
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Pettis » Mon Jul 11, 2011 4:20 pm

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

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 » Mon Jul 11, 2011 10:29 pm

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 » Tue Jul 12, 2011 9:08 pm

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

User avatar
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 » Tue Jul 12, 2011 9:13 pm

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

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (I/2011)

Post by phons » Tue Jul 12, 2011 9:20 pm

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: 1589
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by valscion » Tue Jul 12, 2011 9:21 pm

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

User avatar
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 » Tue Jul 12, 2011 9:35 pm

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 » Tue Jul 12, 2011 9:55 pm

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.

User avatar
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 9:25 am

Re: Tyhmät kysymykset (I/2011)

Post by Sly_Jack0 » Tue Jul 12, 2011 10:29 pm

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 » Tue Jul 12, 2011 10:38 pm

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?

User avatar
Latexi95
Guru
Posts: 1164
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post by Latexi95 » Tue Jul 12, 2011 11:22 pm

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 » Wed Jul 13, 2011 12:47 pm

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 » Wed Jul 13, 2011 12:54 pm

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 » Wed Jul 13, 2011 3:41 pm

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 » Wed Jul 13, 2011 4:20 pm

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