Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

Kelli wrote:
Jonhu wrote:Miten saisin värjättyä segmentin pinta-alan?
onko mitään sektorin piirtokäskyä, tai voiko tuon alueen merkata jotenkin?
Vaikkapa tällä tavalla :

Code: Select all

Function draw_sector(x1#, y1#, x2#, y2#, x3#, y3#, resolution)

    x_dif1# = x1# - x2# : x_dif2# = x2# - x3# : x_dif3# = x3# - x1#
    y_dif1# = y1# - y2# : y_dif2# = y2# - y3# : y_dif3# = y3# - y1#

    to_x# = x2# : to_y# = y2#
    
    For i=1 To resolution
        Line x1#,y1#,to_x#,to_y#
        to_x# = to_x# - x_dif2#/resolution
        to_y# = to_y# - y_dif2#/resolution
    Next i

    to_x# = x3# : to_y# = y3#
    
    For i=1 To resolution
        Line x2#,y2#,to_x#,to_y#
        to_x# = to_x# - x_dif3#/resolution
        to_y# = to_y# - y_dif3#/resolution
    Next i
    
    to_x# = x1# : to_y# = y1#
    
    For i=1 To resolution
        Line x3#,y3#,to_x#,to_y#
        to_x# = to_x# - x_dif1#/resolution
        to_y# = to_y# - y_dif1#/resolution
    Next i

End Function
sinun koodissasi sitten piirrät sektorin vain

draw_sector(550, 350, 550+Sin(360)*150, 350-Cos(360)*150,550+Sin(keskuskulma#)*150, 350-Cos(keskuskulma#)*150, 200)
Sun koodeista muuten oppii todella hyvin noita functioita =)
Tarvisin koko sectorin väritettynä, että voin vähentää kolmion pinta-alan ja saada vain segmentin väritettyä... Tuo on juuri päinvastoin, mutta lähellä oikeaa..

EDIT: Thx :) , taidan alkaa opetella functioita urakalla xD (nyt piirtelen 3D pyramideja)
Last edited by Jonhu on Sun Aug 10, 2008 12:57 pm, edited 2 times in total.
Tekeillä pikkupelejä ja ohjelmia :)
Kelli
Newcomer
Posts: 25
Joined: Mon Aug 27, 2007 10:15 pm
Location: Finland

Re: Tyhmät kysymykset

Post by Kelli »

Sitä näköjään sekoittaa asioita melko helposti. :)

No, tässä nyt varmaankin se mitä tarkoitit:

Code: Select all

Function draw_segment(x1#, y1#, x2#, y2#, x3#, y3#, a#, m#,resolution)
    
    new_a1# = a# : new_a2# = a#

    For i=0 To resolution
        Line x2#,y2#,x1#+Sin(new_a1#)*m#,y1#-Cos(new_a1#)*m#
        new_a1# = new_a1# - a#/resolution
    Next i

    For i=0 To resolution
        Line x3#,y3#,x1#+Sin(new_a2#)*m#,y1#-Cos(new_a2#)*m#
        new_a2# = new_a2# - a#/resolution
    Next i
    
End Function

esim:

draw_segment(550, 350,550+Sin(360)*150, 350-Cos(360)*150,550+Sin(keskuskulma#)*150, 350-Cos(keskuskulma#)*150, keskuskulma#, 150,200)

Edit. Isoilla kulmilla alkaa näköjään jo rakoilemaan, mutta tarkkuutta nostamalla hoituu.
Life is worthless without computer.
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

Propleema kellon kanssa... Pitäisi saada tuo viisari heilumaan, ennenkuin pysähtyy haluttuun kohtaan.. Tavoitteena olisi mekaanin kello.. Sain viisarin heilumaan, mutta sitten muu kello katosi, koska käytin drawscreen komentoa for luupin sisällä.. Tossa on nyt koodi karsittuna minun yrityksistäni..

Code: Select all

SCREEN 450,500
Repeat
        SetWindow "Kello: "+Time()
        Text 100,10,"Date " + Date()
        Text 300,10,"Time " + Time()
        clock()
        DrawScreen
Forever

Function clock()
    kulma=0
    hour=Int(GetWord(Time(),1,":"))
    Minn=Int(GetWord(Time(),2,":"))
    secc=Int(GetWord(Time(),3,":"))
    For i=0 To 360 Step 30 'silmukoi kokonainen ympyrä
        Circle  225+Sin(kulma+i)*150, 250-Cos(kulma+i)*150,5
        If i>0 Then  
            Text 220+Sin(kulma+i)*175, 245-Cos(kulma+i)*175, i/30
        EndIf
    Next i
    
    For i=0 To 360 Step 6   
        Dot 225+Sin(kulma+i)*150, 250-Cos(kulma+i)*150
    Next i

    Line2(225,250,225+Cos(90-minn*6)*145,250-Sin(90-minn*6)*145,2) 
    Line2(225,250,225+Cos(90-(hour*30)-(minn/2))*125,250-Sin(90-(hour*30)-(minn/2))*125,4)
    Color cbred
    Line2 (225,250,225+Cos((90-(secc)*6))*150,250-Sin((90-(secc)*6))*150,1)
    Color 50,50,50
    Smooth2D ON
    Circle 220,245,10
    Color cbwhite
    Smooth2D OFF
EndFunction

Function line2(x#,y#,x2#,y2#,w=1)
    xx#=x#
    yy#=y#
    ang#=GetAngle(xx#,yy#,x2#,y2#)
    While Distance(xx#,yy#,x2#,y2#)>1
        Circle xx#-w/2,yy#-w/2,w
        xx#=xx#+Cos(ang#)
        yy#=yy#-Sin(ang#)
    Wend
EndFunction

Tekeillä pikkupelejä ja ohjelmia :)
Metsämies

Re: Tyhmät kysymykset

Post by Metsämies »

Miten saa helpoiten tehtyä objekteilla metsää? Kuitenkin tarkotus saada ainakin 5 000-20 000 puuta metsään kaadettavaksi. Ja kuinkas sitten onnistuu niiden piirtäminen vain jos ne on ruudun sisällä?
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: Tyhmät kysymykset

Post by Ilmuri »

Coolbasic osaa kyllä itse olla piirtämättä ruudun ulkopuolella olevia objekteja.
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn »

Metsämies wrote:Miten saa helpoiten tehtyä objekteilla metsää? Kuitenkin tarkotus saada ainakin 5 000-20 000 puuta metsään kaadettavaksi. Ja kuinkas sitten onnistuu niiden piirtäminen vain jos ne on ruudun sisällä?
Tyypeillä tietty.Teet ensin tyypin puu ja sille astat kentiksi objektin ja vaikka energiat, sitten niiden luonnin yhteydessä arvot puiden paikat.manuaalista saat apua.Tai voin minäkin esimerkkiä antaa jos tarvit.
Sumu Games: Sam, Ur eye!
Metsämies

Re: Tyhmät kysymykset

Post by Metsämies »

Laita vaan jotain esimerkkiä, ei tarvi olla kuin se puujuttu. Mites sitte voin laittaa siihen objectiin jotain tietoa, esim kuutiomäärän joka sitten tulee moton tietokoneeseen? :D
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

Metsämies wrote:Laita vaan jotain esimerkkiä, ei tarvi olla kuin se puujuttu. Mites sitte voin laittaa siihen objectiin jotain tietoa, esim kuutiomäärän joka sitten tulee moton tietokoneeseen? :D
Asetat siihen samaan tyyppikokoelmaan vaikkapa Fieldin "kuutiomäärä" ja siitä sitten katsot paljon saat puuta kaadosta ;). Siitä saattaa sitten tulla lagista jos 20:tä tuhatta puuta käyt läpi jokaisella looppauskierroksella tarkistaaksesi kaadetaanko puuta, joten tähän pitää sitten keksiä joku muu ratkaisu kuin For...Each.
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
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn »

tossa jonkinlainen esimerkki puiden käsittelystä

Code: Select all

FrameLimit 40
SCREEN 800,600
Type puut
Field obj
Field hp'paljonko joutuu puuta sahaamaan ennenkö kaatuu
Field id'minkä näköinen puu on
EndType 

puu=LoadObject("media\guy.bmp")
puu2=LoadObject("media\ukkeli.bmp")
ShowObject puu,OFF 
ShowObject puu2,OFF 
saw=LoadObject("media\Crosshair.bmp")

'Tehdään puut'''''''
For i=1 To 100'sata puuta
        newpuu.puut= New(puut)
        newpuu\id=Rand(1,2)
        If newpuu\id=1 Then 
            newpuu\obj=CloneObject(puu)'puun ulkomuoto
            newpuu\hp=100'puun hp
            PositionObject newpuu\obj,Rand(-400,400),Rand(-300,300)'arvotaan puun paikka
        EndIf 
        If newpuu\id=2 Then 
            newpuu\obj=CloneObject(puu2)'puun ulkomuoto
            newpuu\hp=150'puun hp
            PositionObject newpuu\obj,Rand(-400,400),Rand(-300,300)'arvotaan puun paikka
        EndIf 
Next i   

Repeat
ObjectOrder saw,1'asetetaan saha muiden objektien päälle
PositionObject saw,MouseWX(),MouseWY()
'puiden käsittely''''''''''''''''''''''''''
For ipuu.puut= Each puut
    If ObjectsOverlap (saw,ipuu\obj) And MouseDown(1) Then ipuu\hp-10 
    If ipuu\hp<0 Then 'jos hp loppuu niin poistetaan puu
        kaadetut+1
        DeleteObject ipuu\obj
        Delete ipuu
    EndIf
Next ipuu

DrawGame'ettei teksti jää muiden alle
Text 10,10,"puita kaadettu "+kaadetut
DrawScreen
Forever  
kannattaa jakaa metsä alueisiin ettei kerralla ihan 20 000 puuta olisi.
Sumu Games: Sam, Ur eye!
Kelli
Newcomer
Posts: 25
Joined: Mon Aug 27, 2007 10:15 pm
Location: Finland

Re: Tyhmät kysymykset

Post by Kelli »

Jos todella haluaa 20 000 puuta ruudulle, niin kannattaa tehdä homma kuvilla.

Esim näin:

Code: Select all

SCREEN 1024,768,32

Dim tree_images(10)

For i=0 To 9
    tree_images(i) = MakeImage(1024,768)
    
    DrawToImage tree_images(i)
        Color 0,255,0
        
        For p=0 To 2000
            Circle Rand(1024),Rand(768),4
        Next p
Next i

DrawToScreen


puita_hakattu = 0

Repeat


    For i=0 To 9
    
        If MouseHit(1)
            PickImageColor tree_images(i),MouseX(),MouseY()
    
            vari = getRGB(GREEN)
    
            If vari = 255
                DrawToImage tree_images(i)
                    Color 0,0,0
                    Circle MouseX()-4,MouseY()-4,8
                DrawToScreen
                
                puita_hakattu = puita_hakattu + 1
            EndIf
        EndIf

        DrawImage tree_images(i),0,0
    Next i

Color 0,0,0
Box 5,5,170,20
Color 255,255,255
Text 10,10,"Puita hakattu: "+puita_hakattu

DrawScreen

Forever

Tuosta puuttuu vain puita generoidessa tarkistus, ettei luoda puita liian lähekkäin. Kunhan sen lisää, voi kuvien määrää tiputtaa.
Life is worthless without computer.
Metsämies

Re: Tyhmät kysymykset

Post by Metsämies »

KillBurn wrote:tossa jonkinlainen esimerkki puiden käsittelystä

Code: Select all

FrameLimit 40
SCREEN 800,600
Type puut
Field obj
Field hp'paljonko joutuu puuta sahaamaan ennenkö kaatuu
Field id'minkä näköinen puu on
EndType 

puu=LoadObject("media\guy.bmp")
puu2=LoadObject("media\ukkeli.bmp")
ShowObject puu,OFF 
ShowObject puu2,OFF 
saw=LoadObject("media\Crosshair.bmp")

'Tehdään puut'''''''
For i=1 To 100'sata puuta
        newpuu.puut= New(puut)
        newpuu\id=Rand(1,2)
        If newpuu\id=1 Then 
            newpuu\obj=CloneObject(puu)'puun ulkomuoto
            newpuu\hp=100'puun hp
            PositionObject newpuu\obj,Rand(-400,400),Rand(-300,300)'arvotaan puun paikka
        EndIf 
        If newpuu\id=2 Then 
            newpuu\obj=CloneObject(puu2)'puun ulkomuoto
            newpuu\hp=150'puun hp
            PositionObject newpuu\obj,Rand(-400,400),Rand(-300,300)'arvotaan puun paikka
        EndIf 
Next i   

Repeat
ObjectOrder saw,1'asetetaan saha muiden objektien päälle
PositionObject saw,MouseWX(),MouseWY()
'puiden käsittely''''''''''''''''''''''''''
For ipuu.puut= Each puut
    If ObjectsOverlap (saw,ipuu\obj) And MouseDown(1) Then ipuu\hp-10 
    If ipuu\hp<0 Then 'jos hp loppuu niin poistetaan puu
        kaadetut+1
        DeleteObject ipuu\obj
        Delete ipuu
    EndIf
Next ipuu

DrawGame'ettei teksti jää muiden alle
Text 10,10,"puita kaadettu "+kaadetut
DrawScreen
Forever  
kannattaa jakaa metsä alueisiin ettei kerralla ihan 20 000 puuta olisi.
Muuten pelaa ihan hyvin, mutta se piirtää niitä puita vain ruudullisen, ja kun liikkuu vaikka ruudullisen oikealle, niin kas, siellähän ei olekaan puita :D
Metsämies

Re: Tyhmät kysymykset

Post by Metsämies »

Metsämies wrote:
KillBurn wrote:tossa jonkinlainen esimerkki puiden käsittelystä

Code: Select all

FrameLimit 40
SCREEN 800,600
Type puut
Field obj
Field hp'paljonko joutuu puuta sahaamaan ennenkö kaatuu
Field id'minkä näköinen puu on
EndType 

puu=LoadObject("media\guy.bmp")
puu2=LoadObject("media\ukkeli.bmp")
ShowObject puu,OFF 
ShowObject puu2,OFF 
saw=LoadObject("media\Crosshair.bmp")

'Tehdään puut'''''''
For i=1 To 100'sata puuta
        newpuu.puut= New(puut)
        newpuu\id=Rand(1,2)
        If newpuu\id=1 Then 
            newpuu\obj=CloneObject(puu)'puun ulkomuoto
            newpuu\hp=100'puun hp
            PositionObject newpuu\obj,Rand(-400,400),Rand(-300,300)'arvotaan puun paikka
        EndIf 
        If newpuu\id=2 Then 
            newpuu\obj=CloneObject(puu2)'puun ulkomuoto
            newpuu\hp=150'puun hp
            PositionObject newpuu\obj,Rand(-400,400),Rand(-300,300)'arvotaan puun paikka
        EndIf 
Next i   

Repeat
ObjectOrder saw,1'asetetaan saha muiden objektien päälle
PositionObject saw,MouseWX(),MouseWY()
'puiden käsittely''''''''''''''''''''''''''
For ipuu.puut= Each puut
    If ObjectsOverlap (saw,ipuu\obj) And MouseDown(1) Then ipuu\hp-10 
    If ipuu\hp<0 Then 'jos hp loppuu niin poistetaan puu
        kaadetut+1
        DeleteObject ipuu\obj
        Delete ipuu
    EndIf
Next ipuu

DrawGame'ettei teksti jää muiden alle
Text 10,10,"puita kaadettu "+kaadetut
DrawScreen
Forever  
kannattaa jakaa metsä alueisiin ettei kerralla ihan 20 000 puuta olisi.
Muuten pelaa ihan hyvin, mutta se piirtää niitä puita vain ruudullisen, ja kun liikkuu vaikka ruudullisen oikealle, niin kas, siellähän ei olekaan puita :D
Olihan siellä tosiaan ne koordinaatit :oops:
Nassi_Setä
Advanced Member
Posts: 281
Joined: Sat Jun 28, 2008 5:19 pm
Location: Hämeessä miä

Re: Tyhmät kysymykset

Post by Nassi_Setä »

miten vois tehä tämmösen:on 1 vihu joka kattoo 4 suuntaan,sen pitäis liikkuu 4 suuntaan ja se tulee vaikka hiirtä kohden silleen että kun vihu kulkee ylös päin niin näytetään vihun "takakuva" ja kun vaikka kulkee oikeelle niin näytetään vihun "oikeakuva" niin miten voi tehä sen että kun vihu kulkee oikeelle niin se "oikeakuva" näytetään?
\../(-_-)\../ <---klick MyBrute Image
Jotain evilii on tekeillä....
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Kuulostaa yläviistosta kuvatulta. Siihen kuvat ovat omiaan, mutta se menee monimutkaiseksi. Tilekartat lienevät paras ratkaisu, toki oma formaatti ja piirtofunkkari ovat pakollisia. Koska yläviistossa pitää ottaa kolme ulottuvuutta huomioon. Isometrinen on hyvin vastaavanlaista.

Mutta vastauksena kysymykseen: lataat kuvat joka suuntaan ja tallennat viimeisen suunnan aina kun jotain liikkumisnamiskaa painetaan ( itse olen monasti käyttänyt 0 = oikealle, 1 = alas, 2 = vasemmalle, 3 = ylös -tekniikkaa, kulmien kanssa työskentely helpottuu ) sitten piirrät sitä vastaavan kuvan.

Koordinaateista sen verran, että perus 45-asteen yläkuvakulmassa ukko liikkuu näytön syvyyssuunnassa puolet siitä, mitä leveyssuunnassa, ja isometrisessä liikutaan alas painettaessa sekä x- että y-akseleilla.

Ja kun en kuitenkaan selittänyt tarpeeksi hyvin, niin kysy tarkennuksia (ja mahd. selitä ongelmaa lisää :p)
pelzti

Re: Tyhmät kysymykset

Post by pelzti »

Miten voin tallentaa objectien paikat ja ladata ne? Entä onko muutujien tallennukseen muuta vaihtoehtoa kuin load- ja saveprogram?
Jonhu
Active Member
Posts: 186
Joined: Mon Aug 04, 2008 5:45 pm

Re: Tyhmät kysymykset

Post by Jonhu »

En haluaisi käyttää copypaste tyyliä ohjelmissani, mutta en millään keksi miten saisin tämän koodin toimimaan kahdella eri ukolla...
Pitäisi saada tuon maara\obj lisäksi toimimaan maara\obj2:sella, jolloin voisin luoda helposti useita erillaisia ukkoja peliini..

EDIT: Mutta tarvisin myös erillaiset liikkeet sille vihulle....
Last edited by Jonhu on Tue Aug 12, 2008 12:18 pm, edited 2 times in total.
Tekeillä pikkupelejä ja ohjelmia :)
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Load- ja saveprogram ovat se viimeinen vaihtoehto tallentamiseen. Eli CB:ssä käytetään yleensä ihan .txt -tiedostoja, toki voit vaihtaa päätteen miksi ikinä haluat. Eivät ole niin virhealttiita ja voit tallentaa vain tarpeellisen. Hieman suunnittelua ne tosin vaativat - eli mikä tallennetaan ja miten tallennetaan. Mutta helppoa sekin on, kun hetken pohtii. Pistetäänpäs esimerkkikoodia, joka tallentaa objektin koordinaatit ja lataa ne.

Code: Select all

guy = LoadObject("Media\guy.bmp", 72)

Repeat
    
    MoveObject guy, UpKey()-DownKey()
    TurnObject guy, LeftKey()-RightKey()
    
    If KeyHit( cbkeyf1 ) Then 'tallennetaan
        
        file = OpenToEdit("save.txt") 'avataan tiedosto
        
        xpos = ObjectX(guy)'tallennetaan arvot muuttujiin - ei pakollista, selkeyden vuoksi tässä
        ypos = ObjectY(guy)
        angle# = ObjectAngle(guy)
        
        WriteInt file, xpos'kirjoitetaan tiedostoon
        WriteInt file, ypos
        WriteFloat file, angle
        
        CloseFile file'suljetaan tiedosto
        
    EndIf
    
    If KeyHit( cbkeyf2 ) Then'ladataan
        
        file = OpenToEdit("save.txt")'avataan
        
        xpos = ReadInt(file) 'luetaan tiedostosta
        ypos = ReadInt(file)
        angle# = ReadFloat(file)
        
        PositionObject guy, xpos, ypos 'asetetaan ukko paikalleen
        RotateObject guy, angle
        
        CloseFile file 'suljetaan tiedosto
        
    EndIf
    
    DrawScreen
Forever
EDIT: Jonhu. Mitä kummaa? Voithan vain ladata eri ukoille erinäköisen kuvan ja laittaa tyyppiin fieldin, joka kertoo millainen ukko on kyseessä.
MikkoK
Devoted Member
Posts: 813
Joined: Thu Jun 05, 2008 2:13 pm
Location: City 17

Re: Tyhmät kysymykset

Post by MikkoK »

Laitanpas tämän nyt tännekkin: Eli siis tutkiskelin tätä cb:n manuaalia ja löysin vihollisesimerkin ja nyt haluaisin lisätä siihen vihollisten poiston hiirenklikkauksesta. Eli jos hiiri on vihollisen päällä ja painetaan hiiren vasenta nappia vihollinen poistuu. Ennen en ole taulukoiden kanssa työskennellyt mutta nyt sain päähäni opetella niitä.
Koodi:

Code: Select all

Dim enemy_x#(100)
Dim enemy_y#(100)
Dim enemy_plusx(100) As Float,enemy_plusy(100) As Float

Dim i As Integer
Dim angle As Integer

'First apply a random position for all enemies 
For i=1 To 100
    enemy_x(i)=Rand(390)
    enemy_y(i)=Rand(290)
    angle=Rand(360)
    enemy_plusx(i)=Cos(angle)
    enemy_plusy(i)=Sin(angle)
Next i

Color 0,255,0

'The main loop 
Repeat


    'update all enemies
    For i=1 To 100
        'draw
        Box enemy_x(i),enemy_y(i),10,10,OFF
        
        'move
        enemy_x(i)=enemy_x(i)+enemy_plusx(i)
        enemy_y(i)=enemy_y(i)+enemy_plusy(i)
        
        'bounce
        If enemy_x(i)<0 Or enemy_x(i)>390 Then enemy_plusx(i)= -enemy_plusx(i)
        If enemy_y(i)<0 Or enemy_y(i)>290 Then enemy_plusy(i)= -enemy_plusy(i)
    Next i
    
    DrawScreen
    
Until EscapeKey()

Code: Select all

#aha. @ IRCNet
<Grandi> Voit laittaa jo valmiiks hailaittiin "Amis-Mikko", koska alan kutsua sua sillä nimellä.
User avatar
Substance
Active Member
Posts: 234
Joined: Fri Mar 14, 2008 5:48 pm

Re: Tyhmät kysymykset

Post by Substance »

Tässä :)

Code: Select all

    Dim enemy_elossa(100)'pistetää elossa taulukko
    Dim enemy_x#(100)
    Dim enemy_y#(100)
    Dim enemy_plusx(100) As Float,enemy_plusy(100) As Float

    Dim i As Integer
    Dim angle As Integer

    'First apply a random position for all enemies
    For i=1 To 100
        enemy_x(i)=Rand(390)
        enemy_y(i)=Rand(290)
        angle=Rand(360)
        enemy_plusx(i)=Cos(angle)
        enemy_plusy(i)=Sin(angle)
        enemy_elossa(i)=1 'enemy on elossa
    Next i

    Color 0,255,0

    'The main loop
    Repeat


        'update all enemies
        For i=1 To 100
         If enemy_elossa(i)=1 Then 'tarkistetaan onko enemy elossa
            'draw
            Box enemy_x(i),enemy_y(i),10,10,OFF
           
            'move
            enemy_x(i)=enemy_x(i)+enemy_plusx(i)
            enemy_y(i)=enemy_y(i)+enemy_plusy(i)
           
            'bounce
            If enemy_x(i)<0 Or enemy_x(i)>390 Then enemy_plusx(i)= -enemy_plusx(i)
            If enemy_y(i)<0 Or enemy_y(i)>290 Then enemy_plusy(i)= -enemy_plusy(i)
            
            'tarkistetaan onko hiiri enemyn päällä
            If MouseX()>enemy_x(i) And MouseX()<enemy_x(i)+10 And MouseY()>enemy_y(i) And MouseY()<enemy_y(i)+10 Then 
            If MouseHit(1) Then enemy_elossa(i)=0 'tarkistetaan klikataanko
            EndIf
            
          EndIf
        Next i
       
        DrawScreen
       
    Until EscapeKey()

Substance aka LittleGreen
Red Encounter - shoot'em uppia - lataus
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Tyhmät kysymykset

Post by Sepi »

Onko cb:llä mahdollista tehdä MakeErrorin tyylistä "erroria", joka ei kuitenkaan sulje ohjelmaa?
Locked