Re: Tyhmät kysymykset
Posted: Tue Sep 16, 2008 11:08 pm
Monesti painetaan vaan hit-kerros näkyviin, mutta kuitenkin piirrettään jollain muulla. Mutta jos olet aivan varma, että hitit on kohdallaan pastee vaikka koodisi tänne.
Game Making Should Be Easy...
https://www.coolbasic.com/phpBB3/
Veikkaisin että se on tilesterin bugi, nimittäin vanhalla foorumilla näin:Tilester bug wrote:Edelleen, koodissa eikä karttojen teossa ole tehty mitään väärin. olen tarkistanut useita kertoja. kysyn vain satutteko tietämään mitään muuta mahdollisesti vaikuttavaa asiaa?
Kannattaa kokeilla Marcoderin Tilegenia tai Astigman Stigmatoria.Astigma wrote:Mutta luulenpa silti, että törmäyksentunnistuksen pitäisi toimia ihan millä tahansa tilellä eikä pelkästään tilesetin ensimmäisellä tilellä... itsellänikin on se bugi. Bugi on luultavasti Tilesterissä, koska valmiit tilemapit toimivat moitteettomasti, mutta omatekemät eivät toimi. Ukko menee seinien läpi niin että hurahtaa.
EDIT: Näyttäisi siltä, ettei Tilester tallenna ollenkaan törmäyskerrosta. Tein ohjelman, joka näyttää onko tietyssä koordinaateissa seinä, mutta mihinkään kohtaan tilemappia ei ollut tallentunut seinää.
Code: Select all
If pause = 1 Then
Repeat
'ja piirretään kaikki oleellinen
Drawscreen
Forever
Endif
Code: Select all
Global x#,d
d = 1
While 1
If GetKey()
Pause=not Pause
EndIf
If Pause Then
Paused()
Else
Playing()
EndIf
Draw()
DrawScreen
Wend
// Movement and play
Function Playing()
Text 0,0,"Playing, press ANY key"
x=x+d
If(x>390 Or x<0)Then d=-d
// ...
EndFunction
// Pausing
Function Paused()
Text 0,0,"Paused, press ANY key"
// ...
EndFunction
// Drawing
Function Draw()
Color 255,0,0
Circle x,145,10
// ...
EndFunction
Code: Select all
Function testi()
Text 125,30,"HP: "+ukko1\health+" / "+ukko1\healthMAX
End Function
Ei toimi, koska sinulla ei ole mitään ukko1:htä siellä funktiossa. Ota se joko parametrinä (käyttäen converttoInteger ja -type funktioita) tai hanki se esimerkiksi for-each loopilla.DumBasZ wrote:No voiko funktiossa käyttää typen fieldejä? Esim.:Mulla ei ainakaan toimi =(Code: Select all
Function testi() Text 125,30,"HP: "+ukko1\health+" / "+ukko1\healthMAX End Function
Code: Select all
'Aseet & räjähteet''''''''''''''''''''''''''''''''''''''''
If KeyHit (CBKEYx) Then
PlaySound heitto
newC4.c4s=New(c4s)
newC4\obj=CloneObject(c4)
newC4\dmg=150
CloneObjectPosition newC4\obj,hero
CloneObjectOrientation newC4\obj,hero
MoveObject newC4\obj,28
SetupCollision newC4\obj,map,1,4,2
EndIf
Code: Select all
MoveObject zombie, 2, rand(-2, 2)
Code: Select all
PELI:
FrameLimit 45
'tyypit ja niiden kentät
Type zombis'nimi
Field obj'objecti
Field hp'energiat
Field dmg'vahinko
Field speed'nopeus
Field score'pisteet
Field id'minkälainen zombie on
EndType
Type bullets'ammukset
Field obj
Field hp
Field dmg
Field speed
Field id
EndType
Type upgs'asepäivitykset
Field obj
Field hp
Field id
EndType
Type c4s
Field obj
Field hp
Field dmg
Field partikkeli
EndType
Type räjähdykset
Field partikkeli
EndType
'ladataan media
gun_sound=LoadSound ("unlimited\media\thompson.wav")
map=LoadMap("unlimited\media\cdm2.til","unlimited\media\tileset.bmp")
hero=LoadObject("unlimited\media\soldier.bmp",72)
pelimusa=PlaySound ("unlimited\media\HGW_BogA_Tankdefense_v1.mp3")
zombi=LoadObject("unlimited\media\guy.bmp",72)
cow=LoadObject("unlimited\media\cow.bmp",32)
bullet=LoadObject("unlimited\media\bullet.bmp",32)
enemy_sound=LoadSound ("unlimited\media\kuolema2.wav")
enemy_sound2=LoadSound ("unlimited\media\kuolema.mp3")
enemy_sound3=LoadSound ("unlimited\media\kuolema3.wav")
c4=LoadObject("Unlimited\media\c4.bmp")
heitto=LoadSound ("Unlimited\media\whip.wav")
imgPoks=LoadAnimImage("unlimited\media\bang.bmp",32,32,0,8)
ShowObject bullet,OFF
ShowObject zombi,OFF
ShowObject cow,OFF
ShowObject c4,OFF
SetupCollision hero,map,1,4,2
hp=500'sinun energiat
powupg=12'Aseen aloitus teho
speedupg=5'aseen aloitus nopeus
Repeat''''''''''''''''''''''''''''''
If SoundPlaying (pelimusa)=0 Then
pelimusa= PlaySound("unlimited\media\HGW_BogA_Tankdefense_v1.mp3")
EndIf
If hp>0 Then 'jos on energiaa niin suritetaan kaikki
CloneCameraPosition hero
MoveObject hero,UpKey()*6-DownKey()*4
TurnObject hero,LeftKey()*5-RightKey()*5
'Aseet''''''''''''''''''''''''''''''''''''''''
If KeyHit (CBKEYx) Then
PlaySound heitto
newC4.c4s=New(c4s)
newC4\obj=CloneObject(c4)
newC4\dmg=150
CloneObjectPosition newC4\obj,hero
CloneObjectOrientation newC4\obj,hero
MoveObject newC4\obj,28
SetupCollision newC4\obj,map,1,4,2
EndIf
If KeyDown(CBKEYspace) And reload<0
PlaySound gun_sound,40
newBullet.BULLETS= New(BULLETS)
newBullet\obj=CloneObject(bullet)
newbullet\dmg=powupg
newbullet\speed=speedupg
CloneObjectPosition newBullet\obj,hero
CloneObjectOrientation newbullet\obj,hero
MoveObject newBullet\obj,24
reload=5
SetupCollision newbullet\obj,map,1,4,2
EndIf
reload-1
For iBullet.BULLETS= Each BULLETS
If CountCollisions(ibullet\obj) Then ibullet\hp-32
MoveObject iBullet\obj,6'likutetaan luotia
Next iBullet
'Asepäivitykset''''''''''''''''''''''''''''''''
'zombit''''''''''''''''''''''''''''''''''''''''
If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
newzombi.zombiS= New(zombiS)
newzombi\obj=CloneObject(zombi)
'Asetetaan vihollinen kohtaan missä ei ole törmäystä
For y=1 To MapWidth()
For x=1 To MapWidth()
If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-600,500),Rand(-600,600)
Next x
Next y
newzombi\id=Rand(1,2)
If newzombi\id =1'Ykkös zombi
newzombi\hp=Rand(90,110):newzombi\dmg=Rand(1,3):newzombi\speed=Rand(2,3):newzombi\score=Rand(10,20)'Asetetaan zombielle kentät
EndIf
If newzombi\id =2'kakkos zombi
PaintObject newzombi\obj,cow
newzombi\hp=Rand(110,130):newzombi\dmg=Rand(2,4):newzombi\speed=Rand(1,2):newzombi\score=Rand(15,25)'toiselle myös
EndIf
SetupCollision newzombi\obj,map,1,4,2
luo=0
EndIf
luo+1
For izombi.zombiS= Each zombiS 'Aloitetaan zombien läpikäynti
'Typerä tekoäly
sidle=Rand(-20,20)
If CountCollisions(izombi\obj) Then MoveObject izombi\obj,0,sidle 'jos kosketaan seinään, niin stepataan
PointObject izombi\obj,hero'zombi tähtää pelaajaan
If ObjectsOverlap(izombi\obj,hero) Then hp-izombi\dmg
For ibullet.bullets=Each bullets
If ObjectsOverlap(ibullet\obj,izombi\obj) Then izombi\hp-ibullet\dmg Then ibullet\hp=-1
If Distance2(iBullet\obj,hero)>600 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
DeleteObject iBullet\obj
Delete iBullet
EndIf
Next ibullet
MoveObject izombi\obj,izombi\speed 'liikutetaan zombia nopeutensa verran
if izombi\hp<0
ääni=rand(1,3)
select ääni 'soita ääni
case 1
playsound enemy_sound
case 2
playsound enemy_sound2
case 3
playsound enemy_sound3
EndSelect
score+izombi\score
DeleteObject izombi\obj
Delete izombi
EndIf
Next izombi
EndIf
DrawGame'ettei teksti jää kartan alle
Color cbwhite
Text 530,10,"FPS "+FPS() 'tulosta FPS
Text 470,30,"(FPS limit = 45)"
Text 10,10,"HP "+hp
Text 10,20,"score "+score
If score<50 Then Text 10,40,"rank: MAGGOT"
If score>50 And score<150 Then Text 10,40,"rank: PRIVATE"
If score>150 And score<300 Then Text 10,40,"rank: CORPORAL"
If score>300 And score<500 Then Text 10,40,"rank: SERGEANT"
If score>500 And score<750 Then Text 10,40,"rank: LIEUTENANT"
If score>750 And score<1000 Then Text 10,40,"rank: CAPTAIN"
If score>1000 And score<1300 Then Text 10,40,"rank: MAJOR"
If score>1300 And score<1650 Then Text 10,40,"rank: COLONEL"
If score>1650 And score<2000 Then Text 10,40,"rank: BRIGADIER"
If score>2000 Then Text 10,40,"rank: GENERAL"
If hp<0 Or hp=0 Then Text 350,300,"GAME OVER"
DrawScreen
Forever
Laita teksti drawgame komennon jälkeen.anttimoi wrote:Miten saan tekstiä objektin päälle?
Code: Select all
FrameLimit 40
SCREEN 800,600
Type c4s
Field obj
Field speed
Field id
Field hp
EndType
c4=LoadObject("media\cow.bmp")
hero=LoadObject("media\guy.bmp",32)
zombi=LoadObject("media\guy.bmp",32)
explow=LoadAnimObject("media\bang.bmp",32,32,0,8)
PositionObject zombi,Rand(-300,300),Rand(-200,200)
Repeat '''''''''''''''''''''''''''''''''''''''''''''''
MoveObject hero,UpKey()*6-DownKey()*4
TurnObject hero,LeftKey()*5-RightKey()*5
LoopObject explow,0,8,0.2
reload-1
If KeyHit(cbkeyspace) And reload<0
newc4.c4S= New(c4S)
newc4\obj=CloneObject(c4)
CloneObjectPosition newc4\obj,hero
CloneObjectOrientation newc4\obj,hero
newc4\hp=10
newc4\speed=15
MoveObject newc4\obj,24
reload=15
EndIf
For ic4.c4S= Each c4S
If KeyHit(CBKEYspace) And ic4\speed=0 Then ic4\hp=-1
ic4\speed-1
If ic4\speed<1 Then ic4\speed=0
MoveObject ic4\obj,ic4\speed
If ic4\hp<1 Then
CloneObjectPosition explow,ic4\obj'siirretään räjähdys samaan paikkaan c4n kanssa
explow_time=30'räjähdysaika
ShowObject explow,ON'näytetään räjähdys
DeleteObject ic4\obj
Delete ic4
EndIf
Next ic4
If explow_time<0 Then ShowObject explow,OFF'jos räjähdysaika loppuu niin piilotetaan räjähdys
explow_time-1
'Jos törmätään räjähdyksen kanssa
If ObjectsOverlap(explow,zombi) And explow_time>0 Then PositionObject zombi,Rand(-50,500),Rand(-50,500)
DrawScreen
Forever
Code: Select all
'------------------------------------------------------------------------------------------------------------
SCREEN 1000,800
FrameLimit 50
'------------------------------------------------------------------
'--------------------------------MAPIT-----------------------------
'------------------------------------------------------------------
kartta = LoadMap("Media\map1.til","Media\tileset.bmp")
'------------------------------------------------------------------
'--------------------------------TYPET-----------------------------
'------------------------------------------------------------------
Type AMMUS
Field obj
Field id
Field dmg
End Type
mAmmus = LoadObject("Media\bullet.bmp")
ShowObject mAmmus,OFF
'-------------------
Type VIHU
Field obj
Field health
End Type
mvihu=LoadObject("Media\guy.bmp",360)
ShowObject mvihu,OFF
uus = 25
'--------------------
Type IVIHU
Field obj
Field health
End Type
mivihu = LoadObject ("media\ukkeli3.bmp",360)
ShowObject mivihu,OFF
iuus = 1500
'-------------------
Type RUHO
Field obj
End Type
mruho = LoadObject ("media\cow.bmp")
ShowObject mruho,OFF
'------------------
Type UPS
Field obj
End Type
mups = LoadObject ("media\bigbullet.bmp")
ShowObject mups,OFF
'------------------------------------------------------------------------
'--------------------------MUUT-LATAUKSET--------------------------------
'------------------------------------------------------------------------
ukko = LoadObject("media\soldier.bmp",360)
PositionObject ukko,0,540
ukkohp = 100
'------------------------------------------------------------------------
aim=LoadObject("Media\target.bmp")
SetupCollision aim, ukko,2,2,2
SetupCollision ukko, aim,2,2,2
SetupCollision ukko, kartta,1,4,2
SetupCollision kartta, ukko,1,4,2
Minigun = 0
M4A1 = 0
M3 = 0
panokset1=12
panokset2=30
panokset3=100
panokset4=8
ASE=0
ASEIDEN_MÄÄRÄ = 4
p_dmg=14
r_dmg=10
kk_dmg=5
m_dmg=5
vihut=0
powerups = 0
spawn = 100
level = 500
tauko=0
kenttä=1
'------------------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------------------------
Repeat
'------------------------------------------------------------------------------------------------------------
'--------------------------------------------------UKKO------------------------------------------------------
'------------------------------------------------------------------------------------------------------------
level -1
If level=0 Then
spawn -1
level=500
EndIf
If vihut>49 Then uus=100
If spawn<1 Then spawn=1
If KeyHit(cbkeyo) Then tauko=1
If tauko=1 Then uus+1
If KeyHit (cbkeyp) Then WaitKey
For v.VIHU= Each VIHU
If Distance2(v\obj,ukko)<20 Then
ukkohp - 1
If ukkohp< 1 Then
MakeError "lol"
EndIf
EndIf
Next v
For iv.IVIHU= Each IVIHU
If Distance2(iv\obj,ukko)<20 Then
ukkohp - 3
If ukkohp< 1 Then
MakeError "lol"
EndIf
EndIf
Next iv
'------------------------------------------------------------------
PositionObject aim,MouseWX(),MouseWY()
PointObject ukko, aim
If KeyDown(cbkeyw) Then MoveObject ukko, 3
If KeyDown(cbkeys) Then MoveObject ukko, -3
If KeyDown(cbkeyd) Then MoveObject ukko, 0, 3
If KeyDown(cbkeya) Then MoveObject ukko, 0, -3
'---------------------------------------------------------------------
'-------------------------AI+SPAWN--------------------------------
'---------------------------------------------------------------------
If uus=0 And tauko=0 Then
v.VIHU = New (VIHU)
v\obj = CloneObject (mvihu)
uus = spawn
v\health = Rand (80,140)
vihut +1
PositionObject v\obj,Rand(200,-200),Rand(-300,-500)
For v.VIHU = Each VIHU
SetupCollision v\obj,kartta,1,4,2
SetupCollision kartta,v\obj,1,4,2
vv.vihu = First(vihu)
vv = After(v)
While vv<>NULL
SetupCollision vv\obj,v\obj,2,2,2
SetupCollision v\obj,vv\obj,2,2,2
vv = After(vv)
Wend
Next v
EndIf
uus = uus-1
'------------------------
For v.VIHU = Each VIHU
PointObject v\obj,ukko
MoveObject v\obj,1
Next v
'-----------------------------------------------------
If iuus=0 Then
iv.IVIHU = New (IVIHU)
iv\obj = CloneObject (mivihu)
iuus = 1500
iv\health = Rand (500,800)
vihut +1
PositionObject iv\obj,Rand(200,-200),Rand(200,-200)
For iv.IVIHU = Each IVIHU
SetupCollision iv\obj,kartta,1,4,2
SetupCollision kartta,iv\obj,1,4,2
Next iv
EndIf
iuus = iuus-1
'------------------------
For iv.IVIHU = Each IVIHU
PointObject iv\obj,ukko
MoveObject iv\obj,1
Next iv
'-------------------------------------------------------------------------
'-----------------------------OSUMAT--------------------------------------
'-------------------------------------------------------------------------
For luoti.AMMUS = Each AMMUS
For v.VIHU = Each VIHU
If ObjectsOverlap (v\obj,luoti\obj) Then
v\health -luoti\dmg
MoveObject v\obj, -5
If v\health<1 Then
tapot +1
uusi -1
vihut -1
ruhoo.RUHO = New (RUHO)
ruhoo\obj = CloneObject (mruho)
CloneObjectPosition ruhoo\obj,v\obj
ObjectLife ruhoo\obj,250
drop=Rand (1,3)
If drop=1 Then
uppi.UPS = New (UPS)
uppi\obj = CloneObject (mups)
CloneObjectPosition uppi\obj,v\obj
EndIf
DeleteObject v\obj
Delete v
EndIf
EndIf
Next v
Next luoti
'--------------------------------------------------
For luoti.AMMUS = Each AMMUS
For v.VIHU = Each VIHU
If ObjectsOverlap (v\obj,luoti\obj) Then
DeleteObject luoti\obj
Delete luoti
Exit
EndIf
Next v
Next luoti
'---------------------------------------------------
For luoti.AMMUS = Each AMMUS
For iv.IVIHU = Each IVIHU
If ObjectsOverlap (iv\obj,luoti\obj) Then
iv\health -luoti\dmg
MoveObject iv\obj, -5
If iv\health<1 Then
tapot +1
powerups +1
vihut -1
ruhoo.RUHO = New (RUHO)
ruhoo\obj = CloneObject (mruho)
CloneObjectPosition ruhoo\obj,v\obj
ObjectLife ruhoo\obj,250
uppi.UPS = New (UPS)
uppi\obj = CloneObject (mups)
CloneObjectPosition uppi\obj,v\obj
DeleteObject iv\obj
Delete iv
EndIf
EndIf
Next iv
Next luoti
'---------------------------------------------------
For luoti.AMMUS = Each AMMUS
For iv.IVIHU = Each IVIHU
If ObjectsOverlap (iv\obj,luoti\obj) Then
DeleteObject luoti\obj
Delete luoti
Exit
EndIf
Next iv
Next luoti
'------------------------------------------------------------------------------------------------------------
'-------------------------------------AMPUMINEN---------------------------------------------------------
'------------------------------------------------------------------------------------------------------------
If KeyHit (2) Then ase = 0
If KeyHit (3) Then ase = 1
If KeyHit (4) Then ase = 2
If KeyHit (5) Then ase = 3
'pistooli
If MouseDown(1) And reload=0 Then
Select ASE
Case 0
If panokset1>0 Then
panokset1-1
luoti.AMMUS = New(AMMUS)
luoti\id=0
luoti\dmg=p_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,5,-3
TurnObject luoti\obj,Rand(3,-3)
reload=25
Else
reload=25
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
panokset1=12
EndIf
EndIf
'rynnäkkökivääri
Case 1
If panokset2>0 And m4a1>29 Then
panokset2-1
luoti.AMMUS = New(AMMUS)
luoti\id=1
luoti\dmg=r_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,3,0
TurnObject luoti\obj,Rand(7,-7)
reload=5
Else
reload=50
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
m4a1-30
panokset2=30
EndIf
EndIf
'konekivääri
Case 2
If panokset3>0 And minigun>99 Then
panokset3-1
luoti.AMMUS = New(AMMUS)
luoti\id=1
luoti\dmg=kk_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,3,0
TurnObject luoti\obj,Rand(10,-10)
reload=1
Else
reload=100
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
panokset3=100
minigun-100
EndIf
EndIf
'haulikko
Case 3
If panokset4>0 And m3>7 Then
panokset4 -1
For i=1 To 10
luoti.AMMUS = New(AMMUS)
luoti\dmg=m_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,3,0
TurnObject luoti\obj,Rand(-15,15)
Next i
reload=50
Else
reload=50
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
panokset4=8
m3 -8
EndIf
EndIf
EndSelect
EndIf
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
Select luoti\id
Case 0
MoveObject luoti\obj,15
If Distance2(luoti\obj,ukko)>200 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 1
MoveObject luoti\obj,24
If Distance2(luoti\obj,ukko)>400 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 2
MoveObject luoti\obj,32
If Distance2(luoti\obj,ukko)>1000 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 3
MoveObject luoti\obj,18
If Distance2(luoti\obj,ukko)>300 Then
DeleteObject luoti\obj
Delete luoti
EndIf
End Select
Next luoti
If m4a1<0 Then m4a1 +100
If minigun<0 Then minigun +30
If m3<0 Then m3 +8
'---------------------------------------------------------
For uppi.UPS = Each UPS
If ObjectsOverlap (uppi\obj,ukko) Then
padit = Rand (1,6)
If padit=1 Then m4a1+30
If padit=2 Then m4a1+30
If padit=3 Then m4a1+30
If padit=4 Then minigun+100
If padit=5 Then m3+8
If padit=6 Then m3+8
DeleteObject uppi\obj
Delete uppi
EndIf
Next uppi
'---------------------------------------------------------
If tapot=1 then kenttä=2
If kenttä = 2 then Gosub map2
'---------------------------------------------------------
UpdateGame
CloneCameraPosition ukko
DrawGame
ShowMouse OFF
DrawScreen
'----------------------------------------------------------
Until EscapeKey()
End
'----------------------------------------------------------
map2:
kartta = LoadMap("Media\map1.til","Media\tileset.bmp")
For v.VIHU = Each VIHU
DeleteObject v\obj
Delete v
Next v
ukko = LoadObject("media\soldier.bmp",360)
PositionObject ukko,0,540
Return