Tyhmät kysymykset (II/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tyhmät kysymykset (II/2009)

Post by Character »

Siihen on erillinen komento. Nimeä en muista eikä ole CoolBasicia tällä koneella mutta etsi manuaalista (objektit) :)
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by Jonez »

Objektit piirretään siinä järjestyksessä missä ne on ladattu (ensin ladattu alimmaisena). Tätä järjestystä voi muuttaa ObjectOrderilla. Oletuksena objektit piirretään kuvien päälle, ellet käytä DrawGamea.

Edit. Sanoin ObjectInteger, tarkoitin ObjectOrder :)
Last edited by Jonez on Tue Jul 21, 2009 12:05 am, edited 1 time in total.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale »

Jonez wrote:Objektit piirretään siinä järjestyksessä missä ne on ladattu (ensin ladattu alimmaisena). Tätä järjestystä voi muuttaa ObjectIntegerillä. Oletuksena objektit piirretään kuvien päälle, ellet käytä DrawGamea.
Tarkoitat kai ObjectOrderia?
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
jesperx96
Active Member
Posts: 190
Joined: Sun Nov 23, 2008 9:35 am
Location: Lappajärvi

Re: Tyhmät kysymykset (II/2009)

Post by jesperx96 »

Saanko mitenkään ylhäältäpäinkuvatussa räiskintäpelissä luodit pysyvästi lähtemään aseen kohdalta? Yritin jo liikuttaa luotia sen latauksen jälkeen aseen kohdalle, ja se toimi, kunnes käänsin ukkelia.
We see the lines in chalk
The warning signs in where we walk
In the shadows of the cities maze
To try and fight for better days
Nassi_Setä
Advanced Member
Posts: 281
Joined: Sat Jun 28, 2008 5:19 pm
Location: Hämeessä miä

Re: Tyhmät kysymykset (II/2009)

Post by Nassi_Setä »

Asetat vain luodin samaan kohtaan ukon kanssa CloneObjectPosition komennolla ja katso oppitunti 18.
\../(-_-)\../ <---klick MyBrute Image
Jotain evilii on tekeillä....
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 »

Nassi_Setä wrote:Asetat vain luodin samaan kohtaan ukon kanssa CloneObjectPosition komennolla ja katso oppitunti 18.
Ja aseta luodille myös sama lähtökulma kuin ukolla komennolla CloneObjectOrientation
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
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

Öh, minulla on funktio jossa pistetään yhet x- ja y-paikat alku paikkoihin, funktion sisällä, mutta niitä kuitenkin vielä muutetaan fuktiossa hiiren paikan mukaa. Miten saan nämä alkupositiot laitettua vain alussa. Kun tällä hetkellä se laittaa koko ajan ne sinne alku paikkaan eikä niitä voi siirtää hiirellä...
Image
jesperx96
Active Member
Posts: 190
Joined: Sun Nov 23, 2008 9:35 am
Location: Lappajärvi

Re: Tyhmät kysymykset (II/2009)

Post by jesperx96 »

VesQ wrote:
Nassi_Setä wrote:Asetat vain luodin samaan kohtaan ukon kanssa CloneObjectPosition komennolla ja katso oppitunti 18.
Ja aseta luodille myös sama lähtökulma kuin ukolla komennolla CloneObjectOrientation
Tietysti teen niin mutta ku se panos lähee ukon vatsasta :mrgreen:
We see the lines in chalk
The warning signs in where we walk
In the shadows of the cities maze
To try and fight for better days
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

Noitte cloneobjectorientation, jne. juttujen jälkeen sano sille MoveObejct obj,12. siirtä sitä 12 piskeliii ettenpäin, tai sitte vähän vaikeempi:
PositionObject kuti,ObjectX(ukko)+Cos(ObjectAngle(ukko))*12,ObjectY(ukko)+Sin(ObjectANgle(ukko))*12
Jotenki näin...
Image
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset (II/2009)

Post by rami123 »

Pitäs saada noille vihollisille ampuminen..ei ei millää mene, vaikka kaikkea olen kokeillut.. kerran sain toimimaan, että ampui vain oikeaan päin ja joka vihu ampu eri nopeudella :shock:(ja iha oikein sen minä luulin tehneeni)
jote pieni apu olisi tarpeellista :D

Code: Select all

viikatemies:
ClearKeys 
ClearText 
ClearObjects 


Type AMMUKSET
 Field obj
 Field dmg
 Field speed
 Field hp
 Field id
End Type 

Type BULLETS
 Field obj
 Field hp
 Field dmg
 Field speed
 Field id
End Type

Type VIHUT
 Field obj
 Field hp
 Field dmg
 Field speed
 Field id
EndType 

Const PAINOVOIMA = -0.1                   
yPlus#=0               

SetWindow "Viikatemies 2",3 

FrameLimit 40 


//PUHELAATIKOT
viikatemiespuhe = LoadImage ("puheloota1.png") 
MaskImage viikatemiespuhe,cbmagenta

tonttupuhe = LoadImage ("puheloota2.png") 
MaskImage tonttupuhe,cbmagenta


//PELINULKOASU
tausta = LoadImage ("tausta2.png")

kenttä=LoadMap("testmap.til","malli tileset.png")
MaskObject kenttä,cbmagenta
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

hiiri = LoadObject("hiiri.png")

//ITSE PELI 
pallo=LoadObject("ammus2.png",72)
ShowObject pallo,OFF
nuoli=LoadObject("ammus1.png",72)
ShowObject nuoli,OFF 


//PELAAJA

oikea=LoadAnimObject("Viikatemiesjuoksu1.png",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51

vasen=LoadAnimObject("Viikatemiesjuoksu2.png",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51

pelihahmo=CloneObject(oikea)
health=100
For x=1 To MapWidth()
For y=1 To MapWidth()
If GetMap2(3,x,y)=1 Then PositionObject pelihahmo,x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
Next y
Next x
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 








//lyöntianimatiot 
vasenlyö=LoadAnimObject ("viikatemieslyö1.png",52,51,0,4)
MaskObject vasenlyö,cbMagenta
ShowObject vasenlyö,OFF
ObjectRange vasenlyö,30,51

oikealyö=LoadAnimObject ("viikatemieslyö2.png",52,51,0,4)
MaskObject oikealyö,cbMagenta
ShowObject oikealyö,OFF
ObjectRange oikealyö,30,51

PositionCamera -160,-120










////VIHOLLISET
oikeajousi=LoadObject("oikeajousi.png")
MaskObject oikeajousi,cbMagenta
ShowObject oikeajousi,OFF
ObjectRange oikeajousi,30,51

vasenjousi=LoadObject("Vasenjousi.png")
MaskObject vasenjousi,cbMagenta
ShowObject vasenjousi,OFF
ObjectRange vasenjousi,30,51

vihu=CloneObject(oikeajousi)
ShowObject vihu,OFF 




Dim vihuja(50) As integer


For X=1 To 50 
 vihuja(x) = CloneObject(oikeajousi) 
 SetupCollision vihuja(x),kenttä,1,4,2
 PaintObject vihuja(x),oikeajousi 
Next X 

For X=1 To 50 
For x=1 To MapWidth()
For y=1 To MapWidth()
 If GetMap2(3,x,y)=50 Then PositionObject vihuja(1),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=51 Then PositionObject vihuja(2),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=52 Then PositionObject vihuja(3),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=53 Then PositionObject vihuja(4),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=54 Then PositionObject vihuja(5),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=55 Then PositionObject vihuja(6),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=56 Then PositionObject vihuja(7),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=57 Then PositionObject vihuja(8),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=58 Then PositionObject vihuja(9),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=59 Then PositionObject vihuja(10),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=60 Then PositionObject vihuja(11),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=61 Then PositionObject vihuja(12),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=62 Then PositionObject vihuja(13),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=63 Then PositionObject vihuja(14),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=64 Then PositionObject vihuja(15),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=65 Then PositionObject vihuja(16),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=66 Then PositionObject vihuja(17),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=67 Then PositionObject vihuja(18),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=68 Then PositionObject vihuja(19),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=69 Then PositionObject vihuja(20),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)
 If GetMap2(3,x,y)=70 Then PositionObject vihuja(21),x*32-(ObjectSizeX(kenttä)/2),-y*32+(ObjectSizeY(kenttä)/2)

Next y
Next x
Next X     


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


Repeat



 DrawImage tausta,0,0'Piirrämmä tausta nyt heti 
 If KeyHit(cbkeyp) Then Gosub tauko'painappa p niin tauko


////HIIRI
 PositionObject hiiri,MouseWX(),MouseWY()
 ShowMouse OFF
 PointObject pelihahmo,hiiri


////AMPUMINEN
If MouseHit (1) And reload<0 
 newBullet.AMMUKSET= New(AMMUKSET)
 newBullet\obj=CloneObject(pallo)
 CloneObjectPosition newBullet\obj,pelihahmo
 CloneObjectOrientation newbullet\obj,pelihahmo
 MoveObject newBullet\obj,24
 reload=15
 SetupCollision newbullet\obj,kenttä,1,4,2
EndIf
 reload-1

 For iBullet.AMMUKSET= Each AMMUKSET
If CountCollisions(ibullet\obj) Then ibullet\hp-32
 MoveObject iBullet\obj,6
If Distance2(iBullet\obj,pelihahmo)>600 Or ibullet\hp<0 Then 
 DeleteObject iBullet\obj
 Delete iBullet
EndIf
 Next iBullet

 
//KÄVELEMINEN ,HYPPÄÄMMINEN JNE...
kulma=GetAngle2(pelihahmo,hiiri)

If kulma<90 Or kulma>270 Then  
    PaintObject pelihahmo,oikea
    'If KeyHit(cbkey) Then PlayObject 
ElseIf kulma>90 Or kulma<270 Then
    PaintObject pelihahmo,vasen

EndIf

//tappeleminen
If MouseDown (3) Then 

tappelu=GetAngle2(pelihahmo,hiiri)

If tappelu<90 Or tappelu>270 Then
 PaintObject pelihahmo,oikealyö
 If maassa and keydown (cbkey1)Then LoopObject pelihahmo,0,4,0.15,ON  

ElseIf tappelu>90 Or tappelu<270 Then
 PaintObject pelihahmo,vasenlyö
Else 
 PlayObject pelihahmo,0
EndIf
EndIf






 vauhti=0 

If KeyDown(cbkeyD) Then 
'juokse oikealle
 PaintObject pelihahmo,oikea 
If maassa Then PlayObject pelihahmo,0,11,0.25
 vauhti=2 'vauhtia oikealle
ElseIf KeyDown(cbkeyA) Then
'juokse vasemmalle
 PaintObject pelihahmo,vasen 
If maassa Then PlayObject pelihahmo,0,11,0.25

 vauhti=-2 'vauhtia vasemmalle
Else 
 PlayObject pelihahmo,0
EndIf
    
  
 TranslateObject pelihahmo,vauhti,yPlus#
 yPlus=yPlus+PAINOVOIMA   
    
 UpdateGame 
 CloneCameraPosition pelihahmo 
    
 maassa=0 
 törmäykset=CountCollisions(pelihahmo)

 For i=1 To törmäykset
If GetCollision(pelihahmo,i)=kenttä

If CollisionAngle(pelihahmo,i)=90 Then 
 yPlus#=-1
 maassa=1 
EndIf

If CollisionAngle(pelihahmo,i)=270 Then 
yPlus#=-1
  EndIf
 EndIf
Next i 
       

       
       

If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    
////HYPPÄÄMINEN
If KeyHit(cbKeyW) And maassa Then 
 yPlus#=2.5
EndIf
    
If KeyHit (cbkeyq) And powerhyppy>1 And maassa Then
 yPlus#=5.0
 powerhyppy-1
EndIf 

////VIHOLLISET
For X=1 To 50 
kulmavihu=GetAngle2(pelihahmo,vihuja(x))

If kulmavihu<90 Or kulmavihu>270 Then  
    PaintObject vihuja (x),vasenjousi
    'If KeyHit(cbkey) Then PlayObject 
    
ElseIf kulmavihu>90 Or kulmavihu<270 Then
    PaintObject vihuja (x),oikeajousi

EndIf
Next x




DrawGame


If health > 49 Then Color 0,210,0                           
If health > 24 And health < 50 Then Color 200,200,0 
If health < 25 And health > 17 Then Color 220,105,0 
If health < 18 Then Color 215,0,0               
If health = 0 Then MakeError "ei mitään vielä.."
 Box 100,23,health,15
 Color cbwhite
 Text 110,25,"HP:"+health

If KeyHit (cbkeyf12) Then ScreenShot "c:\viikatemies2\capture.bmp"

DrawScreen 

Until EscapeKey()



TAUKO:
ClearKeys
ClearText 

Repeat

 DrawGame 
 Color cbwhite
 Text 300,300,"TAUKO, PAINA P"
 
 If KeyHit(cbkeyp) Then Return 
 
DrawScreen
Forever 
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by Hene »

Miten saisin tehtyä niin, että ase vaihtuu hiiren rullalla? Sain ammunnan yhdelle aseelle tehtyä hiiren ykköselle, mutta aseen vaihto ei onnistunut... :/
"Baby," I said. "I'm a genius but nobody knows it but me."
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Tyhmät kysymykset (II/2009)

Post by JATothrim »

Hene: Teet muuttujan joka määrää mikä ase on käytössä: esim. Aktiivinen_ase = 1, päivittää vain pistoolin ampumis koodin. Käytä numeroiden sijasta vakioita, niin aseen vaihtaminen on selkeämpää.
Rullan käsittely: muuttaa Aktiivinen_ase muutujan arvoa, ja pitää sen välillä 0-MAX_ASEITA.

Code: Select all

Aktiivinen_ase = Aktiivinen_ase + MouseMoveZ()
if Aktiivinen_ase < 0 then Aktiivinen_ase = MAX_ASEITA
if Aktiivinen_ase > MAX_ASEITA then Aktiivinen_ase = 0
Siten vain:

Code: Select all

If AmmuJollainAseella then
If Aktiivinen_ase = ASE_PISTOOLI and Pistooli_Ammukset > 0 and Pistooli_reload < 0
    'Pistoolin ampumis koodi tänne
ElseIf Aktiivinen_ase = ASE_PLASMA_LAZER and Plamalazer_ylikuumentuminen < 50
    'Plasmalazer ampumis koodin tänne
Elseif 'jne...
Endif
Muista tehdä jokaiselle aseelle omat muuttujat (ja tyypit), niin ne eivät mene sekaisin. Kokeile koota muuttujat myös yhteen paikkaan koodissa, niin tiedät paremmin missä "tilassa" ase on.

Rami: Koodi on aivan hiriviää .. varmaan 60% kopioitu copypaastella oppitunneista. :? (suositelisin koodin uudelleen kirjoittamista, korjaa mm. vihu ongelman siinä sivussa. 8-) ) Vihollisille on tyyppi mutta teet vihut taulukkoon??? mitään ampumis koodia vihollisille ei näytä olevan antamassasi koodissa. Tee vihu typeen reload muuttuja ja käytä sitä vihujen aseen lataamiseen. tee vaikka vihujen ammus-typeen field joka kertoo mikä vihu ampui sen.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (II/2009)

Post by Hene »

Thänksit. Pitääkin alkaa sovitella omaan koodiin :P

Ja sitten vielä toista kysymystä pukkaa;
Miten ohjelmaan voi tehdä "oikean" latausikkunan? Noita addtexteillä tehtyjä, feikattuja latausikkunoitahan nyt näkee jokaisen amatöörin tekeleissä, mutta miten saisi oikeasti liitettyä tekstiä pelin ladatessa? Tällä hetkellä kehitteillä eräs peli, johon tulee vähän enemmän objekteja ym, joten pelin lataaminenkin taitaa kestää jonkin aikaa.
"Baby," I said. "I'm a genius but nobody knows it but me."
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale »

Hene wrote:Thänksit. Pitääkin alkaa sovitella omaan koodiin :P

Ja sitten vielä toista kysymystä pukkaa;
Miten ohjelmaan voi tehdä "oikean" latausikkunan? Noita addtexteillä tehtyjä, feikattuja latausikkunoitahan nyt näkee jokaisen amatöörin tekeleissä, mutta miten saisi oikeasti liitettyä tekstiä pelin ladatessa? Tällä hetkellä kehitteillä eräs peli, johon tulee vähän enemmän objekteja ym, joten pelin lataaminenkin taitaa kestää jonkin aikaa.
Ihan vaikka addTextillä, eli lataat mediaa, päivität prosentit, lataat taas mediaa, päivität prosentit jne.

Jos ei tekstimuotoinen kiinnosta niin sitten piirrät palkin, drawscreen off, lataat, piirrät, drawscreen off, jne, jne
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Guest Mr_noob

Re: Tyhmät kysymykset (II/2009)

Post by Guest Mr_noob »

Minulla on isometrisen kentän pohja, joka on tehty taulukoilla. Pelihahmoni on piirretty taulukkoon, Koska sen pitää piirtyä välillä esim. sohvan taakse. Kysymys kuuluu miten voin tehdä pelihahmolleni liukuvan liikkumisen, ettei pelaaja jokaisella napin painalluksella liiku tökerösti ruudun kerrallaan.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale »

Guest Mr_noob wrote:Minulla on isometrisen kentän pohja, joka on tehty taulukoilla. Pelihahmoni on piirretty taulukkoon, Koska sen pitää piirtyä välillä esim. sohvan taakse. Kysymys kuuluu miten voin tehdä pelihahmolleni liukuvan liikkumisen, ettei pelaaja jokaisella napin painalluksella liiku tökerösti ruudun kerrallaan.
Tekemällä pelihahmolle jonkinlaiset xoffset ja yoffset muuttujat ja piirrät pelaajan sen verran pois ruudusta.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
mika132
Newcomer
Posts: 30
Joined: Sun Jul 12, 2009 1:31 pm

Re: Tyhmät kysymykset (II/2009)

Post by mika132 »

Suunnittelin tekoälylle kisaus tyyliä, mutta saavuin ongelmaiseen pieneen. :)

Meinasin tehdä niin, että rata on täynnä "kiinto pisteitä" joihin muut kuljettajat yrittävät, mutta ongelmaksi tulee, että koodi oli melkoista purkkaa.

Eli olisiko jotain helppoa ratkaisua, että tekoäly ajaisi tietä pitkin rataa ympäri? :)
Business manager - companys mini pack
Tämä on Companys peliin tuleva lisä osa jonka mukana tulee mm.
- Raha pelejä
- Bugi korjauksia
- Yksi botti firma
- Pullon palautus automaatti
- pankki automaatti
Eli kaikkea sälää.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (II/2009)

Post by DatsuniG »

Ja eikun paintilla piirtämään!

Code: Select all

SCREEN 800,600

FrameLimit 40

Type CARS
    Field x#
    Field y#
    Field speed#
    Field angle
    Field r
    Field g
    Field b
EndType 

maa = LoadImage("map.png")


addcar(395,530,0)
Repeat
    If MouseDown(1) Then 
        DrawToImage maa
            Color cbwhite 
            Circle MouseX() - 20,MouseY() - 20,40,40
        DrawToScreen
    EndIf 
DrawImage maa,0,0
    Movement()
    DrawCars()

DrawScreen
Forever



Function DrawCars()
    For uusi.CARS = Each CARS
        Color uusi\r,uusi\g,uusi\b
        DrawShip(uusi\x,uusi\y,uusi\angle)
    Next uusi
EndFunction 

Function AddCar(x,y,angle)
    uusi.CARS = New(CARS)
    uusi\x = x
    uusi\y = y
    uusi\angle = angle
    uusi\r = Rand(255)
    uusi\g = Rand(255)
    uusi\b = Rand(255)
EndFunction

Function DrawShip(X#,y#,Angle)
    Circle x-5,y-5,10,10
    Line x + Cos(Wrapangle(angle)) * 15 , y - Sin(wrapangle(angle)) * 15,x + Cos(wrapangle(angle - 125)) * 15 , y - Sin(wrapangle(angle - 125)) * 15
    Line x + Cos(Wrapangle(angle)) * 15 , y - Sin(wrapangle(angle)) * 15,x + Cos(wrapangle(angle + 125)) * 15 , y - Sin(WrapAngle(angle + 125)) * 15
    Line x + Cos(WrapAngle(angle + 180)) * 1 , y - Sin(WrapAngle(angle + 180)) * 1,x + Cos(WrapAngle(angle - 125)) * 15 , y - Sin(WrapAngle(angle - 125)) * 15
    Line x + Cos(WrapAngle(angle + 180)) * 1 , y - Sin(WrapAngle(angle + 180)) * 1,x + Cos(WrapAngle(angle + 125)) * 15 , y - Sin(WrapAngle(angle + 125)) * 15
EndFunction 

Function Movement()
For uusi.CARS = Each CARS
    For i = -45 To 45 Step 5 
        For a = 0 To 50
            If GetPixel(uusi\x + Cos(uusi\angle + i) * 60,uusi\y - Sin(uusi\angle + i) * 60) <> -16777216 Then 
                uusi\speed = Max(0,uusi\speed - 0.05)
                If GetPixel(uusi\x + Cos(uusi\angle - i - 90) * (80 - a),uusi\y - Sin(uusi\angle - i - 90) * (80 - a)) <> -16777216 Then
                    uusi\angle + 2
                    Goto endx
                Else
                    uusi\angle - 2
                    Goto endx
                EndIf 
                If GetPixel(uusi\x + Cos(uusi\angle + i + 90) * (80 - a),uusi\y - Sin(uusi\angle + i + 90) * (80 - a)) <> -16777216
                    Goto endx
                Else
                    uusi\angle + 2
                    Goto endx
                EndIf 
            Else 
                uusi\speed = Min(2,uusi\speed + 0.01)
            EndIf 
        Next a
    Next i
    
    endx:
    
    uusi\x = uusi\x + Cos(uusi\angle) * uusi\speed
    uusi\y = uusi\y - Sin(uusi\angle) * uusi\speed
Next uusi
EndFunction 
Hengität nyt manuaalisesti.
mika132
Newcomer
Posts: 30
Joined: Sun Jul 12, 2009 1:31 pm

Re: Tyhmät kysymykset (II/2009)

Post by mika132 »

No ei sen ihan noin kuulunut mennä. :D

Auto menee suoraan pari metriä ja lähtee alaspäin, jonka jälkeen paluuta ei näytä olevan. Ei mennyt radalla. Vai mahdoinko tehdä jotain väärin? :P
Business manager - companys mini pack
Tämä on Companys peliin tuleva lisä osa jonka mukana tulee mm.
- Raha pelejä
- Bugi korjauksia
- Yksi botti firma
- Pullon palautus automaatti
- pankki automaatti
Eli kaikkea sälää.
DatsuniG
Advanced Member
Posts: 367
Joined: Fri Aug 15, 2008 9:57 pm

Re: Tyhmät kysymykset (II/2009)

Post by DatsuniG »

Tuo on jo melko vanha koodi, mutta muistaakseni botit pitävät esteenä kaikkea muuta paitsi mustaa. ; )
Hengität nyt manuaalisesti.
Locked