Page 116 of 154
Re: Tyhmät kysymykset
Posted: Wed Jan 14, 2009 4:55 pm
by Jonhu
temu92 wrote:Jaa tuollaista yrität. Jos käytät objektien omia kulmia, voit tarkistaa mahdolliset tulevat törmäykset käytämällä PickObject:ia. En muista nyt juuri sen tarkkoja ominaisuuksia (eli saiko pikselintarkkana).
Thx sain nyt tehty function noilla.
Code: Select all
SCREEN 800,600
car = LoadObject("Media\car2.bmp",90)
guy = LoadObject("Media\pacman.bmp")
'guy = LoadObject("Media\car.bmp")
PositionObject car,100,100
PositionObject guy,-100,100
RotateObject car,180
Const MoveSpeed=4
Const TurnSpeed=2
ObjectPickable guy,3
Repeat
MoveObject car,(KeyDown(cbkeyW)+UpKey())*MoveSpeed-(KeyDown(cbkeyS)+DownKey())*MoveSpeed
TurnObject car,(KeyDown(cbkeyA)-RightKey())*TurnSpeed-(KeyDown(cbkeyD)-LeftKey())*TurnSpeed
osuu=HitPossible(car,guy)
DrawGame
Line2(ObjectX(car)+ScreenWidth()/2,ScreenHeight()/2-ObjectY(car),ObjectAngle(car),osuu)
If osuu>0 Then Text 10,30,"Osuu" Else Text 10,30,"Ei osu"
Text 10,10,"FPS: "+FPS()
Text 10,50,"Etäisyys: "+osuu
DrawScreen
Forever
Function Line2(x#,y#,ang#,pituus#)
Line x#,y#,x# + Cos(ang#)*pituus#,y# - Sin(ang#)*pituus#
EndFunction
Function HitPossible(obj1,obj2)
ObjectPick obj1
o=PickedObject()
If o = obj2 Then
Return Distance(PickedX(),PickedY(),ObjectX(obj1) ,ObjectY(obj1) )
EndIf
EndFunction
Re: Tyhmät kysymykset
Posted: Wed Jan 14, 2009 8:25 pm
by Jani
Miksi vain luku 200 tulee oikein?
Code: Select all
nums=IntP(100,100,200,0,0,0,0,0,0)
Text 1,1,IG(nums,1)+" + "+IG(nums,2)+" = "+IG(nums,3)
DrawScreen
WaitKey
DeleteMEMBlock nums
Function IntP(i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0,i9=0)
Integer9=MakeMEMBlock(4*9)
PokeInt Integer9,0,i1
PokeInt Integer9,1,i2
PokeInt Integer9,2,i3
PokeInt Integer9,3,i4
PokeInt Integer9,4,i5
PokeInt Integer9,5,i6
PokeInt Integer9,6,i7
PokeInt Integer9,7,i8
PokeInt Integer9,8,i9
Return Integer9
EndFunction
Function IG(mem,number=1)
Return PeekInt(mem,number-1)
EndFunction
Tiedän, se on tyhmästi tehty. Tein tuon kumminkin testaus mielessä.
Re: Tyhmät kysymykset
Posted: Wed Jan 14, 2009 8:30 pm
by temu92
Muistipaloja en ole käyttänyt mutta villinä veikkauksena sanon että johtuu siitä että olet laittanut PokeIntin 2. arvon 0, 1, 2... kun Int on 4 tavua eli se pitäisi mennä 0, 4, 8...
Plus taulukot ois kova homma osata
Re: Tyhmät kysymykset
Posted: Thu Jan 15, 2009 1:40 pm
by phons(koulussa)
Ekaks: Miks siel on 4*9? Se hidastaa jonkun verran. Pistä mielummin 36.
Toiseks: Miks siel on PeekInt(mem,number-1). jos sinne pistää nollan ni se voi vaik MAVittaa ja jotain.
Re: Tyhmät kysymykset
Posted: Thu Jan 15, 2009 4:26 pm
by temu92
phons(koulussa) wrote:Ekaks: Miks siel on 4*9? Se hidastaa jonkun verran. Pistä mielummin 36.
Ei pitäisi vaikuttaa mitään. Jos coolbasic on tehty järkevästi kuten sen luulen olevan, kääntäjä osaa laskea tuon kertolaskun jo etukäteen eikä se hidasta ollenkaan enää ajovaiheessa. Muutenkin kertolasku on nopeimpia operaatioita matematiikassa että vaikka tekisikin ajovaiheessa, ei eroa olisi ollenkaan.
Re: Tyhmät kysymykset
Posted: Thu Jan 15, 2009 5:44 pm
by KilledWhale
temu92 wrote:
Ei pitäisi vaikuttaa mitään. Jos coolbasic on tehty järkevästi kuten sen luulen olevan, kääntäjä osaa laskea tuon kertolaskun jo etukäteen eikä se hidasta ollenkaan enää ajovaiheessa. Muutenkin kertolasku on nopeimpia operaatioita matematiikassa että vaikka tekisikin ajovaiheessa, ei eroa olisi ollenkaan.
CoolBasicin tavukoodi kun sattuu olemaan melko optimoimatonta tällaisia etukäteen laskettuja systeemeitä on turha toivoa. Jo coolbasicin tavukoodia tutkimalla näkee heti että näin ei tehdä. Kertolasku on toki nopea mutta coolbasic ohjelmaa ei voi koskaan optimoida liikaa
Re: Tyhmät kysymykset
Posted: Thu Jan 15, 2009 5:54 pm
by TheFish
KilledWhale wrote:CoolBasicin tavukoodi kun sattuu olemaan melko optimoimatonta tällaisia etukäteen laskettuja systeemeitä on turha toivoa. Jo coolbasicin tavukoodia tutkimalla näkee heti että näin ei tehdä. Kertolasku on toki nopea mutta coolbasic ohjelmaa ei voi koskaan optimoida liikaa
Riippuu vähän tilanteesta. Jos se ei ole mitenkään aikakriittinen asia, ainakin minä teen sen mieluummin koodin kannalta selkeästi kuin optimoidusti. Voi sitä muokata myöhemminkin jos siitä muodostuu pullonkaula. Tuossa nelosella ja ysillä on molemmilla oma tarkoituksensa, joten ne on selkeämpi pitää erillään (etenkin kun tuo tuntuisi olevan tarkoitettu vain muistipalan alustamiseen joka suoritetaan vain kerran).
Re: Tyhmät kysymykset
Posted: Thu Jan 15, 2009 6:01 pm
by Jani
.Jotta ei nyt viedä tulta liian pitkälle, niin pitää tämän sanon;
En tuosta toki mitään ohjelmaa tee. Tuo oli vain ensimmäinen testi muistipaloilla
Re: Tyhmät kysymykset
Posted: Fri Jan 16, 2009 10:15 pm
by Kassu
Pitää sitten tännekin kirjottaa jotain...
...eli tietääkö kukaan miten hyvin CoolBasic toimii jos F-Secure on asennettuna? Itellä oli F-Secure muutama vuosi sitten asennettu koneelle jolloin se aina epäili cbRun.exe:ä. Tähän ei myöskään auttanut se että valitsin aina käännettäessä "luota", sillä cbRun muttuu joka kerta kun kääntää uuden/muutetun koodin, jolloin F-Secure valitti sitä että sovellus on muuttunut ja piti varmistaa että uuteenkin sovellukseen pystyi luottamaan.
Eli haluaisin siis tietää miten uusi F-Secure toimii CB:n kanssa. (Käyttöjärjestelmänä Vista)
Ja jos joku ihmettelee miksi minulla juuri nyt ei ole anti-virusta asennettuna, niin se on siksi että käytän pääsääntöisesti Mac OS X:ää ja Windowsia(offlinessä) ainoastaan CB:n takia.
Re: Tyhmät kysymykset
Posted: Fri Jan 16, 2009 10:22 pm
by Jani
Ota se ajonaikainen tarkistus pois. tai joku semmone.
Re: Tyhmät kysymykset
Posted: Fri Jan 16, 2009 10:24 pm
by temu92
Kassu wrote:Pitää sitten tännekin kirjottaa jotain...
...eli tietääkö kukaan miten hyvin CoolBasic toimii jos F-Secure on asennettuna? Itellä oli F-Secure muutama vuosi sitten asennettu koneelle jolloin se aina epäili cbRun.exe:ä. Tähän ei myöskään auttanut se että valitsin aina käännettäessä "luota", sillä cbRun muttuu joka kerta kun kääntää uuden/muutetun koodin, jolloin F-Secure valitti sitä että sovellus on muuttunut ja piti varmistaa että uuteenkin sovellukseen pystyi luottamaan.
Eli haluaisin siis tietää miten uusi F-Secure toimii CB:n kanssa. (Käyttöjärjestelmänä Vista).
Itsellä on nyt ollu F-Secure 2008 vuoden verran ja voin sanoa että ainakin itsellä se on toiminut niin hyvin kuin vaan voi. Asetuksia tweakkaamalla sen saa olemaan valittamatta siitä että cbRun.exe muuttuu joka käännöskerralla ja muutenkin asetuksia vaihtelemalla sen saa pitämään päänsä kiinni kuitenkaan tietoturvasta paljoa tinkimättä. Ajonaikainen sovellusten tarkistus kuitenkin pitää ottaa juuri pois, se on juuri se joka sen estää.
Re: Tyhmät kysymykset
Posted: Fri Jan 16, 2009 10:29 pm
by KankiKalle
Kassu: Mulla ainakin kyselee että luotanko tähän ohjelmaan ja sellasta muuta blaa blaa blaata.
En muista säädinkö jotakin F-Securen asetuksia ettei koko ajan kyselisi jotakin. Ja muista suorittaa CB järjestelmänvalvojana. Vista vaati sellaista.
Re: Tyhmät kysymykset
Posted: Fri Jan 16, 2009 10:53 pm
by Kassu
Kiitos kaikille. En ihan odottanu että vastaukset tulisi näinkin nopeesti, mutta mikäs siinä. Voinkai sitten huoletta asentaa F-Securen. Ja CB:tä oon jo pyörittäny vistalla kohta pari vuotta vistalla, että se vistan järjestelmänvalvoja juttu oli jo tiedossa.
Re: Tyhmät kysymykset
Posted: Sat Jan 17, 2009 12:15 pm
by Character
Olen jo kysynyt tätä mutta miten saan taulukoilla tehdyt biljardipallot kolmioon???
Ei onnistu vaikka mitä yritän.
Edit: Niitä palloja on 15 kuten kasipallossa
Re: Tyhmät kysymykset
Posted: Sat Jan 17, 2009 1:10 pm
by Jonez
Tässä jonkinlainen tapa asettaa ne kolmioon. Jos todella haluat tehdä bilis-pelin, ja tarvitset oikeat pallot oikeisiin paikkoihin, suosittelen piirtämään pallot kuvatiedostoon peräkkäin tyyliin: "OOOOOOOOOOOOOOO", josta ohjelma sitten valitsee aina seuraavan pallon (DrawImageBox). Toinen tapa on tietenkin koodata jokainen koordinaatti jokaiselle pallolle erikseen. Ehkä hiukan tylsä ratkaisu, mutta toimiva.
Code: Select all
//Riveillä 10 - 16 luodaan ainoastaa muoto ja koordinaatit palloille. Älä vaihda mitään muuta kuin koordinaatteja (rivit 12 - 13).
//Niillä saat asetettua pallot mihin tahansa ja mihin muotoon tahansa.
//Jos haluat esim. kolmion toisinpäin, kuten ne biljardissa olisivat, vaihda rivin 12 koordinaatit näin: '= 50 - y * 10'
Dim pallot( 14, 1 ) 'luodaan taulukko
Const KOKO = 10
//käydään pallot läpi
For y = 0 To 4
For x = 0 To y
pallot( palloja, 0 ) = 30 + x * KOKO - ( y * KOKO ) / 2 //pallojen x-koordinaatit.
pallot( palloja , 1 ) = 10 + y * KOKO //pallojen y-koordinaatit.
palloja + 1 //joka rivissä on 1 pallo enemmän. Lisätään tässä
Next x
Next y
Repeat
//piirretään pallot
For i = 0 To 14
Circle pallot( i, 0 ), pallot( i, 1 ), KOKO
Next i
DrawScreen
Forever
//Edit:
Tässä on koodi jossa pallot piirretään kuvatiedostosta. Koska tein kuvan cb:n piirtokomennoilla (se luodaan aina koodin alussa), ja olen laiska, on pallot väärässä järjestyksessä. Siitä saa kuitenkin idean hyvin selville.
Code: Select all
Dim pallot( 14, 1 ) 'luodaan taulukko
Const KOKO = 20
imgPallot = MakeImage( 15 * KOKO, KOKO )
DrawToImage imgPallot
For i = 0 To 14
Circle i * KOKO , 0, KOKO, 0
Text i * KOKO + KOKO / 2 - TextWidth( i + 1 ) / 2, -KOKO / 2 + TextHeight( i + 1 ) / 2, i + 1
Next i
DrawToScreen
//käydään pallot läpi
For y = 0 To 4
For x = 0 To y
pallot( palloja, 0 ) = 50 + x * ( KOKO + 1 ) - ( y * KOKO ) / 2 //pallojen x-koordinaatit.
pallot( palloja , 1 ) = 10 + y * KOKO //pallojen y-koordinaatit.
palloja + 1 //joka rivissä on 1 pallo enemmän. Lisätään tässä
Next x
Next y
Repeat
//piirretään pallot
For i = 0 To 14
DrawImageBox imgPallot, pallot( i, 0 ), pallot( i, 1 ), i * KOKO, 0, KOKO, KOKO
Next i
Text 5, 130, "Kuva palloista:"
DrawImage imgPallot, 5, 150
DrawScreen
Forever
Re: Tyhmät kysymykset
Posted: Sat Jan 17, 2009 1:44 pm
by Character
Kiitos paljon. Katsotaan saanko tuosta jotain irti.
Re: Tyhmät kysymykset
Posted: Sat Jan 17, 2009 5:58 pm
by Jani
En löytänyt haku-toiminnolla vastausta.
Elikkä voiko Execute komennolla käynnistäessä laittaa samalla käynnistysparametrit?
EDIT: pystyi näköjään
Re: Tyhmät kysymykset
Posted: Sun Jan 18, 2009 4:53 pm
by rami123
osaako kukaan ratkaista tätä ongelmaa?
miksi heittää mavia kun yrittää ampua? kun ammus osuu vihuun se poistaa vihun hp stä voimansa verran..
Code: Select all
hp=100
voima=5
ammukset = 20
//tapot sekä pisteet
tapot=0
tapotpisteet=1000
Repeat////
//pelaajan ohjaus
PointObject pelaaja,hiiri
If LeftKey() Then TurnObject pelaaja,5
If RightKey() Then TurnObject pelaaja,-5
If UpKey() Then MoveObject pelaaja,2
If DownKey() Then MoveObject pelaaja,-2
If MouseHit (1) And reload=0 Then
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
luotihp=2
ammukset - 1
CloneObjectPosition luoti\obj,pelaaja
CloneObjectOrientation luoti\obj,pelaaja
reload=5
EndIf
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
If Distance2(luoti\obj,pelaaja)>300 Then del=ON
If del=ON
DeleteObject luoti\obj
Delete luoti
del=OFF
EndIf
Next luoti
If ammukset = 0 Then ////ammusten loppuminen
reload=-1
EndIf
If ammukset < 1 Then ////ampuminen
reload=5
EndIf
//ALIENIT
If luo>80
newAlien.vihut= New(vihut)
newAlien\obj=CloneObject(vihollinen1)
PositionObject newAlien\obj,Rand(-1600,1000),Rand(1600,-1000)
newAlien\id=Rand(1,2)
If newAlien\id = 1 Then
newAlien\hp=Rand(130,190):newAlien\dmg=Rand(2,5):newAlien\score=Rand(10,30)
EndIf
If newAlien\id = 2 Then
PaintObject newAlien\obj,vihollinen2
newAlien\hp=Rand(300,320):newAlien\dmg=Rand(5,8):newAlien\score=Rand(15,35)
EndIf
luo=0
EndIf
luo+1
For iAlien.vihut= Each vihut
If ObjectSight (iAlien\obj,pelaaja) Then
PointObject iAlien\obj,pelaaja
MoveObject iAlien\obj,4
EndIf
Next iAlien
////TÄSSÄ ONGELMA KOHDAT ALKAA!
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
If ObjectsOverlap (luoti\obj,iAlien\obj) Then
newAlien\hp-voima
EndIf
Next luoti
Re: Tyhmät kysymykset
Posted: Sun Jan 18, 2009 4:57 pm
by phons
Pistä se viimeinen For - Next lauseke sinne alienin For - Next lausekkeen sisään niin silloin se tunnistaa sen alien\obj:kin.
Re: Tyhmät kysymykset
Posted: Sun Jan 18, 2009 5:42 pm
by Character
Miten saan pelini kansioon exenä? Tarvitaanko siihen jotain erillistä ohjelmaa vai..?
Toivottavasti edes ymmärsitte mistä on kyse..