Tyhmät kysymykset (II/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

If- lauseke suomeksi:
Jos pelaaja1:hden ja pelaaja2:hden välinen etäisyys on alle 30 ja painetaan näppäintä Q ja oikea nuolinäppäin on päästetty irti nin sitte...:?

Ok, ongelma on se että KeyUp on 1 vain sen jälkeen kun se on päästetty ja KeyHit on 1 vain kun se on laitettu alas ei silloin kun se on, eli sinun pitäisi painaa q alas ja päästä oikea nuoli ylös täsyin samaanaikaan.. Tai se tietysti voi riippua myös FPS:stä, mutta mutta..
Ei tarvita koodeja tämän enempää.. En tiedä mihin pyrit tällä koodilla joten en osaa auttaa tekemään mitään parempaa koodia tuon tilalle.
Image
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset (II/2009)

Post by Ilkka »

Pyrin siihen että, jos puolustus-nappia painetaan ei iskut mene läpi.
Image
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

En tajua noita sinun koodejasi mitkä näppäimet tekevät mitäkin? Itse tekisin näin:

Code: Select all

If KeyDown(pelaaja1_puolustusnappi) Then pelaaja1_defence = 1 Else pelaaja1_defence = 0
If KeyDown(pelaaja2_puolustusnappi) Then pelaaja2_defence = 1 Else pelaaja2_defence = 0
If KeyDown(pelaaja1_hyökkäysnappi) Then
    If pelaaja2_defence = 0 Then pelaaja2_hp - 4
EndIf
If KeyDown(pelaaja2_hyökkäysnappi) Then
    If pelaaja1_defence = 0 Then pelaaja1_hp - 4
EndIf
Näin..
Image
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset (II/2009)

Post by Ilkka »

phons wrote:En tajua noita sinun koodejasi mitkä näppäimet tekevät mitäkin? Itse tekisin näin:

Code: Select all

If KeyDown(pelaaja1_puolustusnappi) Then pelaaja1_defence = 1 Else pelaaja1_defence = 0
If KeyDown(pelaaja2_puolustusnappi) Then pelaaja2_defence = 1 Else pelaaja2_defence = 0
If KeyDown(pelaaja1_hyökkäysnappi) Then
    If pelaaja2_defence = 0 Then pelaaja2_hp - 4
EndIf
If KeyDown(pelaaja2_hyökkäysnappi) Then
    If pelaaja1_defence = 0 Then pelaaja1_hp - 4
EndIf
Näin..
Juu. Ite justiin tein tolla tyylillä. Hivenen erillain. Kiitos avusta.
Image
koodaaja31

Re: Tyhmät kysymykset (II/2009)

Post by koodaaja31 »

En löytäny manuaalista mitä esimerkkei mite tälläne tehtäis.Pitäs saada kopioituu viivoja esim.3000kpl.koitin jotai epätoivosesti typellä säätää :D mut en opnnistu nii joku sais auttaa.

Code: Select all

Type viivat
Field x1
Field y1
Field x2
Field y2
End Type 
...
For iviiva.viivat= Each viivat
i=0 To 30
    newviiva.viivat= New(viivat)
        newviiva\x1=Rand(1,1280)
        newviiva\x2=Rand(1,1280)
        newviiva\y1=Rand(1,1024)
        newviiva\y2=Rand(1,1024)
   Line x1,y1,x2,y2
   
    i=0 To 30
  
        
       Line x1,y1,x2,y2
        
       
        
        i=i+1
        
    Next iviiva
siel toistuu samat jutut monta kertaa, kun en yhtää tienny et minne noi pitäs laittaa...
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jonez »

Meni vähän ohi tuo sinun ongelmasi, mutta säädin koodinpätkäsi toimivaan muotoon. Koodi piirtää 30 satunnaista viivaa näytölle.

Code: Select all

Type viivat
    Field x1
    Field y1
    Field x2
    Field y2
End Type 

//Luodaan 30 viivaa
For i = 1 To 30
    newviiva.viivat= New(viivat)
    newviiva\x1=Rand(1, ScreenWidth() )
    newviiva\x2=Rand(1, ScreenWidth() )
    newviiva\y1=Rand(1, ScreenHeight() )
    newviiva\y2=Rand(1, ScreenHeight() )
Next i

//Pääsilmukka
Repeat
    
    //Käydään viivat läpi
    For iviiva.viivat= Each viivat
        
        //piirretään viiva
        Line iviiva\x1, iviiva\y1, iviiva\x2, iviiva\y2 
    Next iviiva
    
    DrawScreen
Forever
Edit. muokkasin koodia ettei kukaan neropatti tulisi kertomaan että koodi piirtääkin 31 viivaa.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
User avatar
Koodari
Active Member
Posts: 201
Joined: Wed Nov 18, 2009 9:01 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Koodari »

Ilkka wrote:Scan-koodeja ei ole pakko muistaa ulkoa, vaan tilalle voi myös kirjoittaa jonkun CoolBasicin sisäänrakennetuista näppäinvakioista. Esim. KeyHit(cbKeyA) tarkastaa, painetaanko J-näppäintä. Listan näppäinvakioista näet SCAN-taulukosta (linkki yllä)
HAHA FAIL :lol:
Vai että A -näppäin tarkistaa, että paineaanko näppäintä J :D
Alussa oli asiakas, projekti ja Koodari...

Code: Select all

[23:36:33] <Minixmix> jos nyt viel yhen lastin heittäis
[23:36:48] <Minixmix> Sit loput vois hoitaa kännyllä :/
[00:14:49] <Minixmix> mutta nyt tyhjennykselle ->
[/size]
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Zero »

Copy-Paste ... vakava, vakava asia ;)
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
User avatar
kaneli2000
Guru
Posts: 1059
Joined: Mon Mar 17, 2008 2:40 pm
Location: Lempäälä

Re: Tyhmät kysymykset (II/2009)

Post by kaneli2000 »

Koodari wrote:
Ilkka wrote:Scan-koodeja ei ole pakko muistaa ulkoa, vaan tilalle voi myös kirjoittaa jonkun CoolBasicin sisäänrakennetuista näppäinvakioista. Esim. KeyHit(cbKeyA) tarkastaa, painetaanko J-näppäintä. Listan näppäinvakioista näet SCAN-taulukosta (linkki yllä)
HAHA FAIL :lol:
Vai että A -näppäin tarkistaa, että paineaanko näppäintä J :D
Ei tarvitse päteä vaikka joku typottaisi. Sen sijaan voi korjata, että se tarkistaa painetaanko näppäintä A.
I see the rainbow rising
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by valscion »

kaneli2000 wrote:Ei tarvitse päteä vaikka joku typottaisi. Sen sijaan voi korjata, että se tarkistaa painetaanko näppäintä A.
Oikeastaan oli aikas huvittava huomautus :D manuskassa on siis itsessään tuo virhe ;)

EDIT: Hui kamala! Viimeinen kerta näin turhaan offtopickiin minulta!
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
Herra Siili
Advanced Member
Posts: 308
Joined: Tue Nov 25, 2008 8:06 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Herra Siili »

VesQ wrote:
kaneli2000 wrote:Ei tarvitse päteä vaikka joku typottaisi. Sen sijaan voi korjata, että se tarkistaa painetaanko näppäintä A.
Oikeastaan oli aikas huvittava huomautus :D manuskassa on siis itsessään tuo virhe ;)

EDIT: Hui kamala! Viimeinen kerta näin turhaan offtopickiin minulta!
Voihan sen itselleen korjata manuaalin lähdekoodiin.
a.k.a. Gehock
koodari31

Re: Tyhmät kysymykset (II/2009)

Post by koodari31 »

tuli ongelma.miten mittaa fps keskiarvo vaikka 20sekunnin ajalta??jotai pientä koodinpätkää jos joku viittis laittaa,ku ei oo mitää tietoo miten tollane tehää :geek: fps keskiarvo tietyltä ajalta
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by temu92 »

Code: Select all

lol = Timer()
While lol+20000 > Timer()
	If asd+1000 < Timer() Then
		asd			= Timer()
		fpstotal	= fpstotal + FPS()
	End If
	Text 0,0, FPS()
	DrawScreen
Wend
Print "Average fps: "+fpstotal/20
WaitKey
koodari31

Re: Tyhmät kysymykset (II/2009)

Post by koodari31 »

mikä tos kusee ,ku fps oli kokoaja yli 80 ja sitte lopuks näytti et keskiarvo oli 72 :D sitte ku laitoin fpstotal jakajaksi 18 nii alko näyttee enemmä oikeelta.
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (II/2009)

Post by TheFish »

koodari31 wrote:mikä tos kusee ,ku fps oli kokoaja yli 80 ja sitte lopuks näytti et keskiarvo oli 72 :D sitte ku laitoin fpstotal jakajaksi 18 nii alko näyttee enemmä oikeelta.
Tuo esimerkki ei itsessään anna oikeaa tulosta, koska sen alussa pitäisi olla muutaman sekunnin odotus ennen mittaamista. Oikean tuloksen saat kun laitat sen keskelle jotain ohjelmaa (tarvittavin muokkauksin tietysti).
CoolBasic henkilökuntaa
Kehittäjä
Tuxi
Active Member
Posts: 190
Joined: Wed Jan 21, 2009 10:25 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Tuxi »

koodari31 wrote:tuli ongelma.miten mittaa fps keskiarvo vaikka 20sekunnin ajalta??jotai pientä koodinpätkää jos joku viittis laittaa,ku ei oo mitää tietoo miten tollane tehää :geek: fps keskiarvo tietyltä ajalta
Itse tekisin tällä tavalla:

Code: Select all

startTime = Timer()
While startTime+20000 > Timer()
   frames + 1
   Text 0,0, FPS()
   DrawScreen
Wend
Print "Average fps: "+frames/20
WaitKey
Projektit:
Jotain pientä (Ehkä vähän suurempaakin)

-Tuxi- (myös Tuxi4321)
Koodi

Re: Tyhmät kysymykset (II/2009)

Post by Koodi »

Moi! Latasin Coolbasicin pari päivää sitten, luin oppitunnit ja yritin mahdollisimman paljon saada ensilukemalta niistä irti, jotain jäi ehkä jopa päähänkin :D
Olen kokeillut kaikkea omaa, ja tällaisen liikkuvan laatikon sain aikaan. Uskon että sama koodipätkä on mahdollista kirjoittaa lyhyemmi, tai ainakin matemaattisemmin tms. joten katsokaapa, olisitteko tehneet tämän toisin?

Code: Select all

z=5
yy=5
x=50
Repeat 
    Color 255, 0, 0
    Box x, y, 100, 100
    
    If x<200 And y=0 Then x=x+z
    If x=200 And y<200 Then y=y+yy
    If x<201 And y=200 Then x=x-z
    If x=50 And y<201 Then y=y-yy

    DrawScreen
    
Forever 
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jonez »

En näe koodissa sinänsä mitään vikaa. Hyvin toteutettu, jos olet täydellinen aloittelija ohjelmoinnissa. Jos joitain pitäisi kommentoida, niin kannattaa käyttää välejä, tyyliin:

Code: Select all

If x = 200 And y < 200 Then y = y + yy
Koodi on paljon selvempää.

Toinen asia, jonka voisi mainita, on että funktioiden kuten ScreenWidth() ja ScreenHeight() käyttäminen vakioarvojen sijaan on kannattavaa. Näin ohjelma toimii useammallakin resoluutiolla, jolloin käyttäjälle voi antaa valinnan vapauden.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
koodi

Re: Tyhmät kysymykset (II/2009)

Post by koodi »

Jonez wrote:En näe koodissa sinänsä mitään vikaa. Hyvin toteutettu, jos olet täydellinen aloittelija ohjelmoinnissa. Jos joitain pitäisi kommentoida, niin kannattaa käyttää välejä, tyyliin:

Code: Select all

If x = 200 And y < 200 Then y = y + yy
Koodi on paljon selvempää.

Toinen asia, jonka voisi mainita, on että funktioiden kuten ScreenWidth() ja ScreenHeight() käyttäminen vakioarvojen sijaan on kannattavaa. Näin ohjelma toimii useammallakin resoluutiolla, jolloin käyttäjälle voi antaa valinnan vapauden.
Oikeastaan mulla oli coolbasic n. 10-11-vuotiaana, mutta aika täydellisesti olen kaiken onnistunut unohtamaan.
Toinen kysymys: Voiko tyypeillä tai taulukoilla tehdä panosta(joka siis ei ole objekti, vaan vaikka ympyrä tai neliö), vai vaatiiko se ihan jokaisen neliön luomisen erikseen? Ajattelin yrittää tuolle liikkuvalle laatikolle saada jotenkin "kyvyn", jotta se ampuisi jotain tiettyä kohdetta.

Kysyisin vielä noista tyypeistä ja taulukoista. En kovin hyvin niitä osaa vielä soveltaa, mutta taulukkoa voidaan ajatella kai kirjastona, joka sisältää mm. kirjaosastoja, kirjahyllyjä ja kirjoja. Siitä sitten miettimään, missä asioissa siitä on hyötyä. Tyypit on kai aika samankaltaisia, mutta suunnitelmia/piirrustuksia joiden avulla luodaan asioita(suoraan type-tutoriaalista jota luen parhaillaan :)? Mutta mitä taulukoilla voi tehdä jota tyypeillä ei voi tehdä ja toisinpäin? Olisi ehkä pitänyt lukea tuo type-tutoriaali kokonaan ennen kun laittaa tän kysymyksen, mutta näin pääs nyt käymään. :D

Toivottavasti en selitä ymmärtämättömästi. ;)
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (II/2009)

Post by Awaclus »

koodi wrote: Toinen kysymys: Voiko tyypeillä tai taulukoilla tehdä panosta(joka siis ei ole objekti, vaan vaikka ympyrä tai neliö), vai vaatiiko se ihan jokaisen neliön luomisen erikseen? Ajattelin yrittää tuolle liikkuvalle laatikolle saada jotenkin "kyvyn", jotta se ampuisi jotain tiettyä kohdetta.
Tyyppien ja taulukoiden erojen tarkan analysoimisen jätän wanhoille parroille, mutta tähän osaan vastata. Kyllä tyypeillä voi tehdä laatikoitakin:

Code: Select all

Type LANTTULAATIKOT
    Field x
    Field y
EndType

For i = 1 to 10
    newLaatikko.LANTTULAATIKOT = New (LANTTULAATIKOT)
    newLaatikko\x = Rand (1,400)
    newLaatikko\y = Rand (1,300)
Next i

Repeat
    
    For iLaatikko.LANTTULAATIKOT = Each LANTTULAATIKOT
         Box iLaatikko\x, iLaatikko\y, 18, 7, 1
         iLaatikko\x = Rand(1,400)
         iLaatikko\y = Rand(1,300)
    Next iLaatikko

    DrawScreen

Forever
Kyseinen koodipätkä ei ole kommentoitu, tosin, mutta katsele manuaalista sikäli kun et ymmärrä.

Ammuksen kannattaisi kuitenkin olla objekti (CloneObject). Sen saa ampumaan jotain tiettyä kohdetta PointObjectilla.
Locked