Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn »

shimo wrote:
MAVmaggot wrote:Läpikäy kaikki tilet, etsi datakerroksien haluttu tile ja luo. Koodina se näyttää jotenkin tällaiselta;

Code: Select all

For y=1 To MapWidth()
For x=1 To MapWidth()
    If GetMap2(3,x,y)=haluttudata Then
        vihu.VIHUT = New(VIHUT)
        ObjectToMap(vihu\obj,x,y) //PositionObject...
    EndIf
Next x
Next y
vihut spawnaa keskelle karttaa, onko pakko kayttää ObjectToMap;ia?
Ei. Se on funktion kutsu, voit tehdä tuollaisen funktion, joka luo vihollisen. Mutta jos et osaa niin näinkin pitäisi onnistua.

Code: Select all

For y=1 To MapWidth()
For x=1 To MapWidth()
    If GetMap2(3,x,y)=haluttudata Then
        vihu.VIHUT = New(VIHUT)
        newvihu\obj=cloneobject(Objektin nimi)
        PositionObject newvihu\obj,x*32-(ObjectSizeX(map)/2),-y*32+(ObjectSizeY(map)/2)'Asetetaan vihu kartalle. tilekoko on 32 pikseliä
    EndIf
Next x
Next y
Tuo kannattaa laittaa ennen pääsilmukkaa. Tile kartan koon on oltava 32 pikseliä
Sumu Games: Sam, Ur eye!
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: Tyhmät kysymykset

Post by Sami The Great »

Onko muuten CoolBasicissa mitään konstia saada AnimObject:ia päällystettyä PaintObject komennolla? Tänään kun tein taas The Monarchia tuli ongelma kun piti muuttaa tähtäimen väriä, joka on animoitu, niin PaintObject aiheutti MAVin, kun yritin uudelleen teksturoida tähtäintä. Kokeilin eri keinoja, mutta päädyin sitten loppujenlopuksi siihen, että se ei ole mahdollista ja jouduin tekemään kaksi erillistä AnimObjectia.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: Tyhmät kysymykset

Post by vilQuri »

Sami The Great wrote:Onko muuten CoolBasicissa mitään konstia saada AnimObject:ia päällystettyä PaintObject komennolla? Tänään kun tein taas The Monarchia tuli ongelma kun piti muuttaa tähtäimen väriä, joka on animoitu, niin PaintObject aiheutti MAVin, kun yritin uudelleen teksturoida tähtäintä. Kokeilin eri keinoja, mutta päädyin sitten loppujenlopuksi siihen, että se ei ole mahdollista ja jouduin tekemään kaksi erillistä AnimObjectia.
Kuvalla ja toisella animoobjectilla onnistuu kyllä. Koitin itsekkin:

Code: Select all

obj1 = LoadAnimObject(objekti1)
obj2 = LoadAnimObject(objekti2)
//obj2 = LoadAnimImage(objekti2)

LoopObject obj1,0,4,0.25

Repeat

    
    PositionObject obj1,MouseWX(),MouseWY()
    If KeyHit(cbkeyreturn) Then PaintObject obj1,obj2
    DrawScreen()

Until Escapekey()  
Sitten jos kuvalla päällystetään niin se ponnistuu vaihtamalla tuo obj2 LoadAnimImageksi ja laittamalla tuohon PaintObject obj1,-obj2
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: Tyhmät kysymykset

Post by Sami The Great »

vilQuri wrote:
Sami The Great wrote:Onko muuten CoolBasicissa mitään konstia saada AnimObject:ia päällystettyä PaintObject komennolla? Tänään kun tein taas The Monarchia tuli ongelma kun piti muuttaa tähtäimen väriä, joka on animoitu, niin PaintObject aiheutti MAVin, kun yritin uudelleen teksturoida tähtäintä. Kokeilin eri keinoja, mutta päädyin sitten loppujenlopuksi siihen, että se ei ole mahdollista ja jouduin tekemään kaksi erillistä AnimObjectia.
Kuvalla ja toisella animoobjectilla onnistuu kyllä. Koitin itsekkin:

Code: Select all

obj1 = LoadAnimObject(objekti1)
obj2 = LoadAnimObject(objekti2)
//obj2 = LoadAnimImage(objekti2)

LoopObject obj1,0,4,0.25

Repeat

    
    PositionObject obj1,MouseWX(),MouseWY()
    If KeyHit(cbkeyreturn) Then PaintObject obj1,obj2
    DrawScreen()

Until Escapekey()  
Sitten jos kuvalla päällystetään niin se ponnistuu vaihtamalla tuo obj2 LoadAnimImageksi ja laittamalla tuohon PaintObject obj1,-obj2
Ohjelma tosiaan toimii ;) Ehkä minulla oli jotain muuta häikkää sitten, mutta PaintObjectista se kuitenkin näytti johtuvan. Varmaan joku muuttuja kirjoitettu väärin.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
Eräs Vierailija

Re: Tyhmät kysymykset

Post by Eräs Vierailija »

Code: Select all

SCREEN 1280,1024,0,0

Type NPCs
Field obj
Field health
Field speed
Field intelligence
Field name$
Field gunname$
Field gun
Field damage
Field bullets
Field secondarybullets
Field bulletspeed
Field secondarybulletspeed
Field reload
Field action$
Field specialaction$
Field side$
End Type

kenttä=LoadMap("media\testmap.til","media\tileset.bmp")
trooperobj=LoadObject("media\guy.bmp",72)
ShowObject trooperobj,OFF
smgobj=LoadObject("media\cow.bmp",72)
ShowObject smgobj,OFF

SpawnNPC("actinoid trooper",trooperobj,"smg",smgobj,kenttä,5,8)
SpawnNPC("actinoid trooper",trooperobj,"smg",smgobj,kenttä,3,8)
SpawnNPC("actinoid trooper",trooperobj,"smg",smgobj,kenttä,1,8)

Repeat

If KeyHit(cbkeyf) and showinfo=0 then showinfo=1
If KeyHit(cbkeyf) and showinfo=1 then showinfo=0



UpdateNPCs()
DrawScreen

Forever



Function SpawnNPC(enemy$,img,gun$,gunimg,map,x,y,spesiaali$="")

For vihu.npcs=each npcs
vihu.npcs=New (npcs)
vihu\obj=MakeObject()
PaintObject vihu\obj,img
vihu\gun=MakeObject()
PaintObject vihu\gun,gunimg
SetupCollision vihu\obj,map,2,4,2

Select enemy
Case "trooper"
vihu\health=40
vihu\speed=4
vihu\intelligence=3
vihu\name$="Enemy Trooper"
vihu\action$=""
vihu\specialaction$=spesiaali
vihu\side$="Enemies"
End Select

Select gun
Case "smg"
vihu\damage=4
vihu\secondarybullets=5
vihu\bullets=50
vihu\bulletspeed=8
vihu\secondarybulletspeed=5
vihu\gunname$="SMG"
End Select

PositionObject vihu\obj,x*32,y*32
CloneObjectPosition vihu\gun,vihu\obj
CloneObjectOrientation vihu\gun,vihu\obj

If showdata=1 Then AddText "Spawned NPC "+vihu\name$+" armed with "+vihu\gunname$+" at "+x+","+y+"."

Next vihu
EndFunction

Function UpdateNPCs()
For vihu.npcs=each npcs
CloneObjectPosition vihu\gun,vihu\obj
CloneObjectOrientation vihu\gun,vihu\obj

Select vihu\name$
Case "enemy trooper"
'...tekoäly...
End Select

Select vihu\gunname$
Case "smg"
'...ampuminen...
End Select

Select vihu\action
Case "die"
DeleteObject vihu\obj
Delete vihu
kills+1
end Select

Select vihu\specialaction
Case "take cover"
'suojautuminen
End Select

next vihu
EndFunction

Miksei vihollisten spawnaamiseen tarkoitettu koodi tee mitään?
Nasse-setä
Member
Posts: 54
Joined: Fri Apr 03, 2009 8:12 pm
Location: Loviisa

Re: Tyhmät kysymykset

Post by Nasse-setä »

Olen aivan aloittelija joten älkää sitten hämmästykö. Tää on varmaankin just sellanen tyhmä kysymys. :? Eli miten saan asetettua maskivärin pyörivälle objektille? On toi maskobject mut sehän ei oikee toimi pyörivissä...
Eur0-5isu
Active Member
Posts: 106
Joined: Mon Sep 01, 2008 5:12 pm

Re: Tyhmät kysymykset

Post by Eur0-5isu »

Nasse-setä wrote:Olen aivan aloittelija joten älkää sitten hämmästykö. Tää on varmaankin just sellanen tyhmä kysymys. :? Eli miten saan asetettua maskivärin pyörivälle objektille? On toi maskobject mut sehän ei oikee toimi pyörivissä...
Käytä mustaa maskina. SPunttella taisi olla jokin funktio pyörivien objektien maskaamiseen.
Nasse-setä
Member
Posts: 54
Joined: Fri Apr 03, 2009 8:12 pm
Location: Loviisa

Re: Tyhmät kysymykset

Post by Nasse-setä »

Mustaa käyttäisin, mutta kun tarvitsen sitäkin objektissa. No mutta tuota ehdottamaasi koodia voin käyttää sitten siihen.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset

Post by phons »

Jos käytät mustaa älä käytä täyttä mustaa vaan: 1,1,1... siis kuvassasi. Ja maskiväri taas: 0,0,0
Image
Nasse-setä
Member
Posts: 54
Joined: Fri Apr 03, 2009 8:12 pm
Location: Loviisa

Re: Tyhmät kysymykset

Post by Nasse-setä »

Ok. Kiitti. Kässäsin.
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

Tässä esimerkki Ongelmastani

Pelissäni on ongelma tuo loputon maan päällä ei näy tuo tausta..
(Tämä Ei ole pelini koodia esimerkki vain)

Code: Select all

SCREEN 500,500

//"Loputon maa"
maa=MakeObjectFloor()
metsä=LoadImage("media\grass.bmp")
PaintObject maa,metsä
PositionObject maa,0,0, -2

hiiri = LoadObject ("media\cow.bmp")
tausta = LoadImage ("media\map.bmp")

Repeat 


    PositionObject hiiri,MouseWX(),MouseWY()
    
DrawImage tausta ,0,0 //drawimage ennen drawgamea että hiiri näkyy
DrawGame 

DrawScreen
Forever
////HUOMAA TÄMÄ////
//Miten pitäisi toimia?? :P
//
//-Loputon maa alimpana
//-"loputtoman maan" yläpuolelle tausta 
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset

Post by phons »

DrawGame ennen muuta grafiikkaa. Eli DrawGame ennen DrawImagea
Image
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

phons wrote:DrawGame ennen muuta grafiikkaa. Eli DrawGame ennen DrawImagea
Eikä. sitten ei näy hiiri imagen päällä.
EDIT:

2: Tai sittenkin joo Tilesetinkään päällä ei näy image..

EDIT:

Tämän suurin ongelma ON miksi hiiri ei näy imagen päällä? JA miten sen saa näkymään? :|

phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset

Post by phons »

Ei mitenkää... Tai no saa:

Code: Select all


mouse=LoadImage("media\cow.bmp")'tähän haluamasi hiiren kuva
ShowMouse mouse'pistetään kuva hiireksi

mouse_obj=MakeObject()'tehdään objekti

Repeat
    
    PositionObject mouse_obj,MouseWX(),MouseWY()'Noin... tässä laitetaan luotu objekti hiiren kohdalle jolloin voit käyttää "hiirtäsi" normaaleilla objektifunktioilla/-komennoilla, kutsu vain tuota mouse_obj:tä
    
    DrawScreen
Forever

Pitäisi toimia... en ole ihan varma...
Image
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez »

Itse hiiren saa näkymään juuri edellä mainitulla tavalla. Mutta jos käsitin ongelmasi oikein, yrität saada kuvan piirrettyä kahden objektin väliin. Tässä pieni tekstinpätkä cb:n piirtojärjestyksistä.

Cb:ssä kuvien ja objektien välisen piirtojärjestyksen hallinta on erittäin rajallinen. Saat niin objektit kuin kuvatkin piirrettyä keskenään miten tahansa, tosin objekteilla on pari poikkeusta:
1. MakeObjectFloor-objekti piirtyy AINA kaikkien muiden objektien alle.
2. Tilekarttojen over-kerros piirtyy AINA kaikkien muiden objektien päälle.

Kyseiset erikoisominaisuudet ovat kaiketi jonkinlaisia helppokäyttötoimintoja, mutta loppujen lopuksi asettavat vain turhia rajoituksia kieleen, koska niitä ei voi mitenkään ohittaa.

Saat myös asetettua kuvien ja objektien välisen piirtojärjestyksen keskenään, mutta tämäkin on erittäin rajoittunut: kuvat piirretään aina objektien alle, ellet käytä komentoa DrawGame, jonka ansiosta piirtojärjestys vaihtuu. Tämä tarkoittaa että saat haluamasi kuvat piirrettyä kaikkien objektien alle, ja loput kuvat piirrettyä objektien päälle, mutta et mitenkään saa piirrettyä kuvia objektien väliin.

Periaatteessa tämä asettaa tietyn kysymyksen johon pelintekijän täytyisi vastata ennen kuin rupeaa tekemään peliänsä: tehdäkö peli käyttäen objekteja vai kuvia?
On mahdollista yhdistellä kumpiakin elementtejä, jos vain osaa. Voit esimerkiksi käyttää pelimaailmaan objekteja (tilekartat ja ukot), mutta tehdä muu ulkoasu käyttäen kuvia (menu-ikkuna jne.). Et voi kuitenkaan tehdä esimerkiksi tietynlaisia vihollisia kuvilla ja toisenlaisia objekteilla. Ainakaan se ei ole suositeltavaa.

Suora vastaus ongelmaasi: et saa mitenkään piirrettyä taustaa objektien väliin. Jäljelle jää vaihtoehdot:
1. Tee taustasta objekti.
2. Tee lehmästä kuva.
3. Luo oma "loputon maasto"-funktio, joka käyttää kuvia.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

Jonez wrote: 1. Tee taustasta objekti.
2. Tee lehmästä kuva.
3. Luo oma "loputon maasto"-funktio, joka käyttää kuvia.
hmm joo..

kokeilen 1.stä

jotenkin clonecameralla? että pysyisi mukana liikkuessa ? vai?
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn »

rami123 wrote:
Jonez wrote: 1. Tee taustasta objekti.
2. Tee lehmästä kuva.
3. Luo oma "loputon maasto"-funktio, joka käyttää kuvia.
hmm joo..

kokeilen 1.stä

jotenkin clonecameralla? että pysyisi mukana liikkuessa ? vai?
Käytä ScreenPositionObjectia
Sumu Games: Sam, Ur eye!
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

Kiitos avusta teille! :D pääsin taas suuresta ongelmasta yli.
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset

Post by matti3 »

Tämä kävisi varmaan nopeammin kloonaamalla, mutta päätin nyt ensin koittaa niin, että autot ovat kaikki oma objectinsa. (20 tällä hetkellä)

Niin koitin tälläistä koodia:

Code: Select all



If ObjectX(auto)<30+oma_ukko Or ObjectY(auto)<20+oma_ukko Then
if KeyHit(cbkeyreturn) Then
DeleteObject oma_ukko
EndIf
EndIf
Tarkoitus olisi, että jos oma_ukko on lähellä autoa ja painaa entteriä niin se oma ukko menee autoon sisälle. Mutta se ei jonkin syyn takia mene. Ja jos joku on ystävällinen kertoisi miten saan kloonaamalla noin 50 autoa pyörimään pitkin kaupunkia. Ja samallaisella jutulla, että jos jotain näistä autoista menee lähelle ja painaa entter niin auto ryöstetään. <-- kyseessä ei muuten ole GTA klooni vaan osa pelin ominaisuuksista. :o
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
rami123
Advanced Member
Posts: 354
Joined: Mon Jun 23, 2008 8:20 pm
Location: Kittilä

Re: Tyhmät kysymykset

Post by rami123 »

Miksi include ja execute komennolla tulee

"something went terribly wrong.

coolbasicBeta10xCompilerEXE_v2: 76: Path not found"

JA

tämän jälkeen yritän sammuttaa

"Can't save this file.check the writing permissions"

... :|
Locked