Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
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 »

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.
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Tyhmät kysymykset

Post by Akatsuki »

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!
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 »

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.
Akatsuki
Member
Posts: 56
Joined: Thu Jan 03, 2008 1:39 pm
Location: Ylöjärvi
Contact:

Re: Tyhmät kysymykset

Post by Akatsuki »

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 »

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.
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 »

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.
_machine
Newcomer
Posts: 14
Joined: Tue Aug 28, 2007 2:19 pm

Re: Tyhmät kysymykset

Post by _machine »

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!
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 »

_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: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu »

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)
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 »

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: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu »

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?

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 »

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: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: Tyhmät kysymykset

Post by Ruuttu »

HAA! Se toimii!!! Kiitos avusta koodaaja!
(Ja kiitos myös harvinaisen nopeasta vastauksesta!)
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 »

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
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

Miten tarkistaa onko luku jaollinen jollain tietyllä luvulla ja miten tarkistaa onko luku kokonais vai liukuluku?
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 »

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 »

..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- »

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 8:35 pm

Re: Tyhmät kysymykset

Post by Suffer »

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()

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

Re: Tyhmät kysymykset

Post by tuhoojabotti »

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