Page 116 of 154

Re: Tyhmät kysymykset

Posted: Wed Jan 14, 2009 5: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 9: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ä. :geek:

Re: Tyhmät kysymykset

Posted: Wed Jan 14, 2009 9: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 :P

Re: Tyhmät kysymykset

Posted: Thu Jan 15, 2009 2: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 5: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 6: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 :D

Re: Tyhmät kysymykset

Posted: Thu Jan 15, 2009 6: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 :D
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 7: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 8-)

Re: Tyhmät kysymykset

Posted: Fri Jan 16, 2009 11: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 11:22 pm
by Jani
Ota se ajonaikainen tarkistus pois. tai joku semmone.

Re: Tyhmät kysymykset

Posted: Fri Jan 16, 2009 11: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 11: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 11: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 1:15 pm
by Character
Olen jo kysynyt tätä mutta miten saan taulukoilla tehdyt biljardipallot kolmioon???
Ei onnistu vaikka mitä yritän. :shock:

Edit: Niitä palloja on 15 kuten kasipallossa

Re: Tyhmät kysymykset

Posted: Sat Jan 17, 2009 2: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 2:44 pm
by Character
Kiitos paljon. Katsotaan saanko tuosta jotain irti. :D

Re: Tyhmät kysymykset

Posted: Sat Jan 17, 2009 6: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 5: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 5: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 6:42 pm
by Character
Miten saan pelini kansioon exenä? Tarvitaanko siihen jotain erillistä ohjelmaa vai..?
Toivottavasti edes ymmärsitte mistä on kyse..