Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset

Post by otto90x » Sat Feb 23, 2008 5:34 pm

Akatsuki wrote:2. Mitenkäs sais sellaisen kehykset vaikka joku sinisen laatikon sisällä koko peli ja jotain nappeja siinä reunojen ulkopuolella että niitä vois painella(esim valikko nappi tai inventory tai pelkä joku super komento)
Aluksi käytän tätä koodia vaan koristeena.(huom. sen pitäisi niinkuin muuttaa ne kehykset missä peli on)
En ole mikään ajatustenlukija, mutta oletan että tarkoitit tälläisiä reunuksia?

Code: Select all

SCREEN 1024,768

kehys=MakeImage(800,600)

kehyspaksuus=30

DrawToImage kehys
Color 0,0,255
Box 0,0,800,600,1 
Color 0,0,0
Box kehyspaksuus,kehyspaksuus,800-kehyspaksuus*2,600-kehyspaksuus*2,1 
DrawToScreen 


kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp") 'ladataan kartta

Const vihumäärä=5

ukko = LoadObject ("Media\guy.bmp",72)
kuva=MakeImage (800,600)


Repeat

    If UpKey() Then MoveObject ukko,3
    If LeftKey() Then TurnObject ukko,3
    If RightKey() Then TurnObject ukko,-3
   
    x=ObjectX(ukko)
    y=ObjectY(ukko)
    ang=ObjectAngle(ukko)
   
    camera(kuva,x,y)
   
    DrawImage kuva,100,100
    DrawImage kehys,100,100
   
    DrawScreen

Forever

Function camera(img,x,y)
    
    l=ImageWidth(img)
    k=ImageHeight(img)
    
    UpdateGame
    
    DrawToImage img
    ClsColor cbblack
    Cls
    PositionCamera x,y
    PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2)
    DrawGame
DrawToScreen

EndFunction
EDIT: Hieman yksinkertaistin esimerkkiä
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

User avatar
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 2:39 pm
Location: Ylöjärvi
Contact:

Re: Tyhmät kysymykset

Post by Akatsuki » Sat Feb 23, 2008 5:48 pm

otto90x wrote:
Akatsuki wrote:2. Mitenkäs sais sellaisen kehykset vaikka joku sinisen laatikon sisällä koko peli ja jotain nappeja siinä reunojen ulkopuolella että niitä vois painella(esim valikko nappi tai inventory tai pelkä joku super komento)
Aluksi käytän tätä koodia vaan koristeena.(huom. sen pitäisi niinkuin muuttaa ne kehykset missä peli on)
En ole mikään ajatustenlukija, mutta oletan että tarkoitit tälläisiä reunuksia?

Code: Select all

SCREEN 1024,768

kehys=MakeImage(800,600)

kehyspaksuus=30

DrawToImage kehys
Color 0,0,255
Box 0,0,800,600,1 
Color 0,0,0
Box kehyspaksuus,kehyspaksuus,800-kehyspaksuus*2,600-kehyspaksuus*2,1 
DrawToScreen 


kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp") 'ladataan kartta

Const vihumäärä=5

ukko = LoadObject ("Media\guy.bmp",72)
kuva=MakeImage (800,600)


Repeat

    If UpKey() Then MoveObject ukko,3
    If LeftKey() Then TurnObject ukko,3
    If RightKey() Then TurnObject ukko,-3
   
    x=ObjectX(ukko)
    y=ObjectY(ukko)
    ang=ObjectAngle(ukko)
   
    camera(kuva,x,y)
   
    DrawImage kuva,100,100
    DrawImage kehys,100,100
   
    DrawScreen

Forever

Function camera(img,x,y)
    
    l=ImageWidth(img)
    k=ImageHeight(img)
    
    UpdateGame
    
    DrawToImage img
    ClsColor cbblack
    Cls
    PositionCamera x,y
    PositionCamera CameraX()+((ScreenWidth()-l)/2),CameraY()-((ScreenHeight()-k)/2)
    DrawGame
DrawToScreen

EndFunction
EDIT: Hieman yksinkertaistin esimerkkiä
Juu juuri tuollaista mutta että siinä olis joku kuva siinä reunuksena! Ja jotain nappeja siinä :D
Älä kysy multa!

User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset

Post by otto90x » Sat Feb 23, 2008 5:52 pm

Napit voit tehdä tosiaan esim. tuolla Jonezin funktiolla ja eihän tuota kehyskuvaa tarvi tuossa itse tehdä, vaan voihan sen ladata tiedostosta. Nyt vaan hieman omaa yrittämistä kehiin.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

User avatar
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 2:39 pm
Location: Ylöjärvi
Contact:

Re: Tyhmät kysymykset

Post by Akatsuki » Sat Feb 23, 2008 6:07 pm

otto90x wrote:Napit voit tehdä tosiaan esim. tuolla Jonezin funktiolla ja eihän tuota kehyskuvaa tarvi tuossa itse tehdä, vaan voihan sen ladata tiedostosta. Nyt vaan hieman omaa yrittämistä kehiin.
Juuh... Thanks vaan sulle :D
Rupeen vissiin nyt väsään jotain pelii... (Ihan kunnollista etten tekstipelii kun sain ton valmiiks ton edellisen)
Älä kysy multa!

KoviZ

Re: Tyhmät kysymykset

Post by KoviZ » Sat Feb 23, 2008 6:10 pm

otto90x wrote:Oletan että käytät pelissäsi tilekarttoja ja haluat veren näkyvän kartan päällä mutta kuitenkin joidenkin objektien alla. Tässä ratkaisu:
"Verta" saa enteristä lisättyä hahmon eteen.

Ota huomioon että karttamuuttuja (ja muut veren alle jäävät objektit) täytyy nyt esitellä camera funktiossa joten niiden kannattaa olla globaaleja tai voit muokata camera funktion siten että tarvittavat muuttujat tuodaan funktioon parametrinä. Tai sitten voit tehdä erillisen piilotus/näyttö funktion joka piilottaa ja palauttaa veren alle jäävät objektit.

EDIT: Ääh, pientä korjailua.
Juu kiitos tuo toimi hyvin. Vielä tuohon funktioosi liittyen, eihän sen pitäisi vaikuttaa mitenkään tilekarttojen over-kerrokseen? Nimittäin kun koitin lisätä pelini karttoihin over-kerrosta niin ei tapahtunut mitään. Todennäköisesti evotan, mutta kysyinpä nyt kuitenkin.

User avatar
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Tyhmät kysymykset

Post by otto90x » Sat Feb 23, 2008 6:30 pm

KoviZ wrote:Juu kiitos tuo toimi hyvin. Vielä tuohon funktioosi liittyen, eihän sen pitäisi vaikuttaa mitenkään tilekarttojen over-kerrokseen? Nimittäin kun koitin lisätä pelini karttoihin over-kerrosta niin ei tapahtunut mitään. Todennäköisesti evotan, mutta kysyinpä nyt kuitenkin.
Jos siis haluat veret over kerroksen alle niin pistä piilotuksessa SetMap kartta,OFF,On jolloin pääliskerros piirretään verien päälle, mutta alakerros ei. Kartan palautus edelleen samoin tavoin SetMap kartta,On,On . Mutta funktio ei kyllä mitenkään muuta kartan päällyskerrosta, jos sitä tarkoitit.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.

User avatar
_machine
Newcomer
Posts: 14
Joined: Tue Aug 28, 2007 2:19 pm

Re: Tyhmät kysymykset

Post by _machine » Sun Feb 24, 2008 3:11 pm

Miten saisin törmäyksen saman tyypin vihollisiin.
Eli selkokielellä miten saisin tämän:

Code: Select all

            For i= 1 To 1
            goblin.VIHUT = New (VIHUT)
            goblin\obj = CloneObject (goblinimg)
            goblin\health=25
            PositionObject goblin\obj,-370,50
            SetupCollision goblin\obj,map,1,4,2
           Setupcollision goblin\obj,goblin\obj,1,1,2
            Next i
Toimimaan?
[PC][Wii][GC][N64][GBC]
-Up the Irons!

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset

Post by SPuntte » Sun Feb 24, 2008 3:15 pm

_machine wrote:Miten saisin törmäyksen saman tyypin vihollisiin.
Eli selkokielellä miten saisin tämän:

Code: Select all

            For i= 1 To 1
            goblin.VIHUT = New (VIHUT)
            goblin\obj = CloneObject (goblinimg)
            goblin\health=25
            PositionObject goblin\obj,-370,50
            SetupCollision goblin\obj,map,1,4,2
           Setupcollision goblin\obj,goblin\obj,1,1,2
            Next i
Toimimaan?
Luo ensin vihut tavallisessa for-silmukassa, kuten tuossa teetkin, mutta jätä törmäysten määrittely pois. Kun vihut on luotu, tee kaksi sisäkkäistä For ... = Each ... -silmukkaa, jotka molemmat käyvät kaikki viholliset läpi. Aseta törmäykset sisimmässä silmukassa. Muista tarkistaa, ettei ulompi ja sisempi silmukka käsittele samaa tyyppimuuttujaa, jolloin yritettäisiin asettaa objektin törmäystä itsensä kanssa, mistä todennäköisesti seuraisi MAV tai jotakin muuta absurdia.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

User avatar
Ruuttu
Devoted Member
Posts: 687
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu » Sun Feb 24, 2008 6:58 pm

Noniin. Elikkäs, minulla on tilemap ladattuna (eli se on siis pelimaailmassa valmiina keskellä jne).
Pelihahmon pitäisi alussa sijaita tileistä laskettuna koordinaateissa 12,5.

Miten saan pelihahmon siirrettyä noihin kordinaatteihin?!?

Code: Select all

Positionobject player,32*12,32*5
Tuollaista yritin, mutta ei toiminut (tilen leveys ja korkeus pikseleinä on siis 32)

User avatar
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 » Sun Feb 24, 2008 7:00 pm

Vähennä x-koordinaatista ObjectX(kartta)/2 ja ynnää y-koordinaattiin ObjectY(kartta)/2. Koska tilekartan origohan on keskellä, eikä vasemmassa yläreunassa, missä sen toki olettaisi olevan.

User avatar
Ruuttu
Devoted Member
Posts: 687
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu » Sun Feb 24, 2008 7:11 pm

Tuo kuulosti hyvältä, muttei toiminut (tai tein jotain väärin)

Tarkoititko siis tällaista?

Code: Select all

PositionObject player, (tilex*32)-(ObjectX(map)/2),(tiley*32)+(ObjectY(map)/2)
Minulla tuo laittoi pelihahmon aivan vääriin kordinaatteihin (ihan liikaa ylös ja liian oikealle)
EDIT:

Tarkoititkohan mapin kordinaattien kohdalle mapin kokoa?


User avatar
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 » Sun Feb 24, 2008 7:14 pm

Ruuttu wrote:Tuo kuulosti hyvältä, muttei toiminut (tai tein jotain väärin)

Tarkoititko siis tällaista?

Code: Select all

PositionObject player, (tilex*32)-(ObjectX(map)/2),(tiley*32)+(ObjectY(map)/2)
Minulla tuo laittoi pelihahmon aivan vääriin kordinaatteihin (ihan liikaa ylös ja liian oikealle)
Juu niin, totta. -(tiley*32), koska maailman koordinaatistossa y kasvaa ylöspäin. Niin, ja anteeksi pieni mokani (ei ole tullut nukuttua liikaa) ObjectWidth(map) ja ObjectHeight(map), ObjectX ja ObjectY palauttavat nimittäin tässä tapauksessa aina nollan..

User avatar
Ruuttu
Devoted Member
Posts: 687
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu » Sun Feb 24, 2008 7:19 pm

HAA! Se toimii!!! Kiitos avusta koodaaja!
(Ja kiitos myös harvinaisen nopeasta vastauksesta!)

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset

Post by SPuntte » Sun Feb 24, 2008 7:25 pm

Funktiona:

(pastettu omasta koodista vähän muokaten, ei toimivuustakuuta)

Code: Select all

//Sets object's position to given tile
Function PositionObject2(obj,kartta,x,y)
    mapW = ObjectSizeX(kartta)
    mapH = ObjectSizeY(kartta)
    
    tileW = mapX / MapWidth()
    tileH = mapY / MapHeight()
    
    objX = (ObjectX(kartta)-mapW/2)+tileW*(X-1)+tileW/2
    objY = (ObjectY(kartta)+mapH/2)-tileH*(Y-1)-tileH/2
    PositionObject obj, objX, objY
EndFunction
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: Tyhmät kysymykset

Post by Koodiapina » Mon Feb 25, 2008 5:31 pm

Miten tarkistaa onko luku jaollinen jollain tietyllä luvulla ja miten tarkistaa onko luku kokonais vai liukuluku?
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

User avatar
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: Tyhmät kysymykset

Post by Eräs cb koodaaja » Mon Feb 25, 2008 5:38 pm

Jaollisuuden saa viissiin näin:

Code: Select all

If luku1 mod luku2 = 0 then plaaplaa
Tuohon toiseen ei nopeasti tule mitään mieleen.
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit

m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: Tyhmät kysymykset

Post by m1c » Mon Feb 25, 2008 6:06 pm

..Ja desimaali- ja kokonaislukuproleemiin on myös simppeli vastaus. Mikäli luku muutettuna kokonaisluvuksi on sama kuin alkuperäinen luku, se on kokonaisluku.

User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset

Post by -Z- » Mon Feb 25, 2008 6:19 pm

Tämmöinen tyhmä kysymys: Peilatun objektin osoittaminen toiseen objektiin pointobject-komennolla kusee melko pahasti. Herää kysymys: mistä on kysymys?
Tässä koodia:

Code: Select all

Const PAINOVOIMA = -0.1

yPlus#=0

SCREEN 640,480

FrameLimit 40 

kenttä=LoadMap("Media\bwtest.til","Media\bwtileset.png")
PositionObject kenttä,0,0

oikea=LoadAnimObject("Media\boxboyr.png",20,30,0,16)
ShowObject oikea,OFF

vasen=LoadAnimObject("Media\boxboyl.png",20,30,0,16)
ShowObject vasen,OFF

pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2

pistol= LoadObject("media/pistolhand.png",72)
ShowObject pistol, 0
pistol2= CloneObject(pistol)
MirrorObject pistol2,1
ShowObject pistol2, 0

hand= MakeObject(72)
PaintObject hand, pistol

tahtain=LoadObject("media/tahtain.png")

pointer=MakeObject()

ShowMouse OFF
Repeat
    ClsColor 255,255,255

    vauhti=0

    If KeyDown(cbkeyd) Then 
        PaintObject pelihahmo,oikea
        PaintObject hand, pistol
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2
    ElseIf KeyDown(cbkeya) Then
        PaintObject pelihahmo,vasen
        PaintObject hand, pistol2
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2
    Else 
        PlayObject pelihahmo,0
    EndIf
    
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    UpdateGame
    CloneCameraPosition pelihahmo
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)

    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
    
    If törmäykset=0 Then PlayObject pelihahmo,0
    
    If KeyHit(cbKeyW) And maassa Then 
        yPlus#=4.5
    EndIf
    
    PositionObject tahtain,MouseWX(),MouseWY()

    CloneObjectPosition hand,pelihahmo
    PointObject hand,tahtain
    

    DrawScreen 'piirrä näyttö

Until EscapeKey()
ja kyllä, tämä on muokattu esimerkistä n:ro 19 O.O
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time

Suffer
Newcomer
Posts: 7
Joined: Sun Nov 11, 2007 9:35 pm

Re: Tyhmät kysymykset

Post by Suffer » Tue Feb 26, 2008 6:12 pm

Juu siis mulla ois semmmonen ongelma että tämä MAV:aa jos on liikenteessä yksi vihollinen ja vaikka kaksi panosta.
Laitan koodinkin jotta asia selviäisi

Code: Select all


Type VIHU
    Field obj
End Type

Type AMMUS 
    Field obj 
End Type 



ukko=LoadObject("Media\soldier.bmp",52)

pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF

Mvihu = CloneObject(ukko)
ShowObject Mvihu,OFF 
 
 
Repeat



    If LeftKey() Then TurnObject ukko,3
    If RightKey() Then TurnObject ukko,-3
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    

   
    If KeyDown(cbKeyRControl) And reload=0 Then    
        luoti.AMMUS = New(AMMUS) 
        luoti\obj=CloneObject(pati) 
        CloneObjectPosition luoti\obj,ukko                
        CloneObjectOrientation luoti\obj,ukko            
        reload=7       
    EndIf
   
    If reload>0 Then reload=reload-1

  
   For luoti.AMMUS = Each AMMUS
      MoveObject luoti\obj,6
   Next luoti



 If Timer()-ajastin > 3000 Then
    enemy.VIHU = New (VIHU)
    enemy\obj = CloneObject(ukko)
    CloneObjectPosition enemy\obj,ukko
    CloneObjectOrientation enemy\obj,ukko
    ajastin = Timer()
 EndIf 



 For enemy.VIHU =  Each VIHU
    MoveObject enemy\obj,Rand(1,4) 

 For luoti.AMMUS = Each AMMUS 
    
    
'
  If ObjectsOverlap( luoti\obj,enemy\obj )  Or  ObjectsOverlap (enemy\obj,luoti\obj,3) 

    DeleteObject enemy\obj
    Delete enemy
 
    DeleteObject luoti\obj
    Delete luoti
    
  EndIf 


 Next luoti
 Next enemy
 






     Text 0,0,FPS()
   
    DrawScreen

Until EscapeKey()


User avatar
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Tyhmät kysymykset

Post by tuhoojabotti » Tue Feb 26, 2008 6:19 pm

pistä exit sinne objectien poiston jälkeen muuten cb yrittää käyttää niitä ->MAV
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”

Locked