LieroXMapSystem (Melkein :D )

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
User avatar
elmo123
Active Member
Posts: 153
Joined: Sun Sep 09, 2007 4:19 pm

LieroXMapSystem (Melkein :D )

Post by elmo123 » Mon Oct 15, 2007 2:54 pm

Tämä karttasysteemi on melkein LieroX-tyylinen, vain kaivaus puuttuu. :D Tällä hetkellä voi ladata tuhoutumattoman maaston ja valinnaisesti myös taustan.

Funkkarit:
  • LoadLieroXMap(kivi_kuva$,[tausta_kuva$]) - lataa lieroX-kartan
  • InitLieroXMapCollision() - alustaa törmäykset, kutsuttava ennen törmäysobjektien liikuttelua
  • SetupLieroXMapCollision(obj) - asettaa törmäystunnistuksen objektin kanssa
  • UpdateLieroXMapCollisions() - päivittää törmäykset
  • GetLieroXMapCollision(obj) - kertoo onko objekti törmännyt karttaan. Käyttö suositellaan UpdateLieroXMapCollisions()-funktion jälkeen
Itse koodi:

Code: Select all

//LIEROX MAP SYSTEM BY ELMO123
//

Const gravity=-0.02

Type COLLISIONOBJECTS
Field obj
Field oldx
Field oldy
Field iscollision
End Type

//Globaalit kuvat
Global objStone
Global objBack


//Lataa LieroX-tyylisen kartan:
//stone$ - tuhoutumaton kerroskuva,"kivi"
//[back$] - koristekerroskuva
Function LoadLieroXMap(stone$,back$="")

objStone = LoadObject(stone$)
ObjectPickable objStone,3
If back$<>"" Then objBack = LoadObject(back$)

EndFunction  

//Asettaa törmäystunnistuksen
//karttan ja tietynobjektin kanssa
Function SetupLieroXMapCollision(object)

collobj.COLLISIONOBJECTS = New(COLLISIONOBJECTS)
collobj\obj = object

EndFunction 

//Alustaa törmäyksen. Kutsu silmukassa ennen 
//törmättävien objektien liikuttamista!
Function InitLieroXMapCollision()

For collobj.COLLISIONOBJECTS = Each COLLISIONOBJECTS
    
    collobj\oldx = ObjectX(collobj\obj)
    collobj\oldy = ObjectY(collobj\obj)
    collobj\iscollision = 0
    
Next collobj

EndFunction 

Function GetLieroXMapCollision(object)

For collobj.COLLISIONOBJECTS = Each COLLISIONOBJECTS
    
    If collobj\obj = object Then Return collobj\iscollision
    
Next collobj

EndFunction

Function UpdateLieroXMapCollisions()

For collobj.COLLISIONOBJECTS = Each COLLISIONOBJECTS
    
    
    If ObjectsOverlap(collobj\obj,objStone,3) Then PositionObject collobj\obj,collobj\oldx,collobj\oldy:collobj\iscollision = 1
    
Next collobj

End Function

Ja pikku esimerkki:

Code: Select all

//LIEROX MAP SYSTEM BY ELMO123
//

Const gravity=-0.02

Type COLLISIONOBJECTS
Field obj
Field oldx
Field oldy
Field iscollision
End Type

//Globaalit kuvat
Global objStone
Global objBack

LoadLieroXMap("Media\level.bmp")
vene=LoadObject("Media\ship.bmp",72)

SetupLieroXMapCollision(vene)

Repeat

InitLieroXMapCollision()

    'turn the ship
    If LeftKey() Then TurnObject vene,5
    If RightKey() Then TurnObject vene, -5
    
    'thrust/update physics
    If UpKey() Then 
        
        movex#=movex#+Cos(ObjectAngle(vene))*0.05
        movey#=movey#+Sin(ObjectAngle(vene))*0.05
        
    EndIf
    
    'move the ship according to physics
    movey=movey+gravity
    If movey< -10 Then movey= -10
    TranslateObject vene,movex,movey


Updatelieroxmapcollisions()

If GetLieroXMapCollision(vene) Then movey=-movey/2:movex=-movex/2

CloneCameraPosition vene

DrawScreen

Forever

//Lataa LieroX-tyylisen kartan:
//stone$ - tuhoutumaton kerroskuva,"kivi"
//[back$] - koristekerroskuva
Function LoadLieroXMap(stone$,back$="")

objStone = LoadObject(stone$)
ObjectPickable objStone,3
If back$<>"" Then objBack = LoadObject(back$)

EndFunction  

//Asettaa törmäystunnistuksen
//karttan ja tietynobjektin kanssa
Function SetupLieroXMapCollision(object)

collobj.COLLISIONOBJECTS = New(COLLISIONOBJECTS)
collobj\obj = object

EndFunction 

//Alustaa törmäyksen. Kutsu silmukassa ennen 
//törmättävien objektien liikuttamista!
Function InitLieroXMapCollision()

For collobj.COLLISIONOBJECTS = Each COLLISIONOBJECTS
    
    collobj\oldx = ObjectX(collobj\obj)
    collobj\oldy = ObjectY(collobj\obj)
    collobj\iscollision = 0
    
Next collobj

EndFunction 

Function GetLieroXMapCollision(object)

For collobj.COLLISIONOBJECTS = Each COLLISIONOBJECTS
    
    If collobj\obj = object Then Return collobj\iscollision
    
Next collobj

EndFunction

Function UpdateLieroXMapCollisions()

For collobj.COLLISIONOBJECTS = Each COLLISIONOBJECTS
    
    
    If ObjectsOverlap(collobj\obj,objStone,3) Then PositionObject collobj\obj,collobj\oldx,collobj\oldy:collobj\iscollision = 1
    
Next collobj

End Function

Kommentteja! :D
EDIT:

Aika purkkaa kyllä on, taidanpa yrittää liukutörmäystä :?

Last edited by elmo123 on Thu Oct 18, 2007 2:36 pm, edited 1 time in total.
Kiinnostuin pelien tekemisestä ennen 1. luokkaa.
Sitten 3. luokalla tuli CB. Ja siitä se alkoi.

Blender! TF2! CB! Game Maker! Nokia-mollaus! Kitaransoitto! Breakdance! MadTracker! Minecraft!

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: LieroXMapSystem (Melkein :D )

Post by MaGetzUb » Tue Oct 16, 2007 12:19 pm

Kysäisisin vaan MILLÄ IHMEELLÄ AIJOT TOTEUTAA KAIVAMISEN!?! Sitä on tosi monet yrirttänyt ja harvat onnistunut. Imagella sais KAIVAMISEN onnistumaan.
EDIT:

Ukko ei liu-u x suuntiin, se jää kiinni kuvaan. :(

Last edited by MaGetzUb on Wed Oct 17, 2007 10:38 am, edited 2 times in total.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: LieroXMapSystem (Melkein :D )

Post by Ilmuri » Tue Oct 16, 2007 2:49 pm

Asiasta penikseen http://pox.fi/~ilmuri/march.rar. LOLOMGHIIRI.
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic

User avatar
Purple
Newcomer
Posts: 7
Joined: Thu Oct 25, 2007 1:01 pm
Location: Vaasa
Contact:

Re: LieroXMapSystem (Melkein :D )

Post by Purple » Thu Oct 25, 2007 10:06 pm

Ihan hyvä. Tosin vaikea ohjata :)
Aika purkkaa kyllä on, taidanpa yrittää liukutörmäystä
Juuh nii on :roll:
Työn alla :
- Yewi » Rpg peli. Valmis 2% ( Tuleekohan koskaan valmiiksi? :/ )
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Purple

User avatar
Mickey
Newcomer
Posts: 33
Joined: Sat Feb 09, 2008 11:32 am
Location: Liminka

Re: LieroXMapSystem (Melkein :D )

Post by Mickey » Sat Feb 23, 2008 12:47 pm

programmer of DSG wrote: Imagella sais KAIVAMISEN onnistumaan.
Niinkö, miten? :o
4-Dimensional Games:
Kotisivu (Täältä löydät tietoja sekä peliemme latauslinkit.)
Facebook-sivu (Täältä löydät esimerkiksi uutisia peliemme ja sivumme päivityksistä.)

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: LieroXMapSystem (Melkein :D )

Post by koodaaja » Sat Feb 23, 2008 1:36 pm

Mickey wrote:
programmer of DSG wrote: Imagella sais KAIVAMISEN onnistumaan.
Niinkö, miten? :o
DrawToImage. Piirrät siis kuvaan maskivärillä vaikka pallon siihen kohtaan, johon haluat kaivaa. Sitten näyttää siltä kuin karttaan tulisi aukko.

User avatar
elmo123
Active Member
Posts: 153
Joined: Sun Sep 09, 2007 4:19 pm

Re: LieroXMapSystem (Melkein :D )

Post by elmo123 » Sat Mar 08, 2008 7:19 pm

koodaaja wrote:DrawToImage. Piirrät siis kuvaan maskivärillä vaikka pallon siihen kohtaan, johon haluat kaivaa. Sitten näyttää siltä kuin karttaan tulisi aukko.
Niin, tuolla tekniikalla pystyy, mutta kun kaivamista ruvetaan toteuttamaan objekteilla, niin se kuvalla maalaaminen aina kun räjähdys muokkaa maastoa koituu pelin hidastukseksi. :(
Kiinnostuin pelien tekemisestä ennen 1. luokkaa.
Sitten 3. luokalla tuli CB. Ja siitä se alkoi.

Blender! TF2! CB! Game Maker! Nokia-mollaus! Kitaransoitto! Breakdance! MadTracker! Minecraft!

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: LieroXMapSystem (Melkein :D )

Post by koodaaja » Sat Mar 08, 2008 7:42 pm

Juurikin tämän takia kannattaa käyttää kuvia kaikkeen, mitä tekee, ellei kyseessä satu olemaan ylhäältä kuvattu räiskintä tai tasoloikka ( tuhoutumattomalla maastolla ) joita varten objektit on (kuin) luotu.

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: LieroXMapSystem (Melkein :D )

Post by nevssons » Wed Mar 12, 2008 10:06 pm

elmo123 wrote:
koodaaja wrote:DrawToImage. Piirrät siis kuvaan maskivärillä vaikka pallon siihen kohtaan, johon haluat kaivaa. Sitten näyttää siltä kuin karttaan tulisi aukko.
Niin, tuolla tekniikalla pystyy, mutta kun kaivamista ruvetaan toteuttamaan objekteilla, niin se kuvalla maalaaminen aina kun räjähdys muokkaa maastoa koituu pelin hidastukseksi. :(
Äly hoi! Älä jätä! Käytä paintobjektia!
Koodarina kohtalainen, henkilönä vittumainen
Image

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: LieroXMapSystem (Melkein :D )

Post by TheFish » Wed Mar 12, 2008 10:19 pm

nevssons wrote:
elmo123 wrote:
koodaaja wrote:DrawToImage. Piirrät siis kuvaan maskivärillä vaikka pallon siihen kohtaan, johon haluat kaivaa. Sitten näyttää siltä kuin karttaan tulisi aukko.
Niin, tuolla tekniikalla pystyy, mutta kun kaivamista ruvetaan toteuttamaan objekteilla, niin se kuvalla maalaaminen aina kun räjähdys muokkaa maastoa koituu pelin hidastukseksi. :(
Äly hoi! Älä jätä! Käytä paintobjektia!
Eikös kuvalla maalaaminen tarkoita paintobjectia?
CoolBasic henkilökuntaa
Kehittäjä

User avatar
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: LieroXMapSystem (Melkein :D )

Post by regalis » Wed Mar 12, 2008 10:48 pm

TheFish wrote:
nevssons wrote:
elmo123 wrote:Niin, tuolla tekniikalla pystyy, mutta kun kaivamista ruvetaan toteuttamaan objekteilla, niin se kuvalla maalaaminen aina kun räjähdys muokkaa maastoa koituu pelin hidastukseksi. :(
Äly hoi! Älä jätä! Käytä paintobjektia!
Eikös kuvalla maalaaminen tarkoita paintobjectia?
Tarkoittaa. Eli elmo123 tarkoitti juuri sitä, että paintobject hidastaa peliä liikaa.

User avatar
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 6:02 pm

Re: LieroXMapSystem (Melkein :D )

Post by nevssons » Thu Mar 13, 2008 6:41 pm

okei...
Koodarina kohtalainen, henkilönä vittumainen
Image

Post Reply