Post by tomahomae on Dec 28, 2017 23:15:26 GMT -5
Project name: Операция "Свинцовый туман"
Sketch source (warning, comments is onto Russian!):
Screenshots here:
TODO:
My TDS.rar (13.66 KB)
Sketch source (warning, comments is onto Russian!):
DISABLE SCREEN
option title,"Battle Tank 1" ' Game Title
option TEXTSTART, 0, 0 ' Default is 1, 1
option TEXTHEIGHT, 30 ' Default is 26
option TEXTWIDTH, 39 ' Default is 38
palettes palette0,0,0,16
palettes palette1,1,0,16
palettes ExploPal,2,0,16
'Zagotovka spryta Tank - Player 1
loadtiles TankTiles,12,256
tank=addsprite(2,2)
propsprite tank,256,0
movesprite tank,280,232
Body=0
tankSpeed=1
'Zagotovka spryta puli sozdana spryatana za ekranom
LoadTiles bulletData,1,268
bullet1=AddSprite(1,1)
PropSprite bullet1,268,0
MoveSprite bullet1,0,480
bullet_1=0
bullet1Speed=3
LoadTiles ExplosionTiles,4,273
explosion1=addsprite(2,2)
propsprite explosion1,273,2
MoveSprite explosion1,0,480
explosion_1=0
'Zagotovka spryta vraga sozdana raspolagaetsya randomno v ramkah ekrana
loadtiles EnemyTiles,4,269
Enemy1=AddSprite(2,2)
PropSprite Enemy1,269,1
MoveSprite Enemy1,128+RND(304),128+RND(112)
Enemy_1=10
'10 popadaniy
ENABLE SCREEN
on vblank gosub main
enable interrupt vblank
end
main:
'DeBug Info:
locate 0,16: print "x=";SpritePosX(tank);" y=";SpritePosY(tank)
locate 2,16: print "j=";j
'End DeBug Info
GoSub Controller
If bullet_1=1 Then
ShiftSprite bullet1, 0,-1-bullet1Speed
ElseIf bullet_1=2 Then
ShiftSprite bullet1, 0,1+bullet1Speed
ElseIf bullet_1=3 Then
ShiftSprite bullet1, -1-bullet1Speed,0
ElseIf bullet_1=4 Then
ShiftSprite bullet1, 1+bullet1Speed,0
ElseIf bullet_1=5 Then
ShiftSprite bullet1, -1-bullet1Speed,-1-bullet1Speed
ElseIf bullet_1=6 Then
ShiftSprite bullet1, 1+bullet1Speed,-1-bullet1Speed
ElseIf bullet_1=7 Then
ShiftSprite bullet1, -1-bullet1Speed,1+bullet1Speed
ElseIf bullet_1=8 Then
ShiftSprite bullet1, 1+bullet1Speed,1+bullet1Speed
EndIf
'Udalenie puli (skritie za ekran), esli ona vihodit za granici vidimogo ekrana (nachalo ekrana-verhniy ugol dlya spraytov x=128 y=128)
If bullet1>0 Then
If SpritePosX(bullet1) < 128 or SpritePosX(bullet1) > 440 or SpritePosY(bullet1) < 128 or SpritePosY(bullet1) > 352 Then
MoveSprite bullet1,0,480
bullet_1=0
EndIf
EndIf
' esli pulya kasaetsa protivnika Enemy1
If Enemy_1>0 Then
If SpritePosX(bullet1) > SpritePosX(Enemy1)-1 and SpritePosX(bullet1)+8 < SpritePosX(Enemy1)+14+8 Then 'Left and Right Enemy
If SpritePosY(bullet1) > SpritePosY(Enemy1)-1 and SpritePosY(bullet1)+8 < SpritePosY(Enemy1)+14+8 Then 'Up and Down Enemy
'Boom
explosion_1=5
MoveSprite explosion1,SpritePosX(Enemy1),SpritePosY(Enemy1)
'pulya skrivaetsya i deactiviruetstya
MoveSprite bullet1,0,480
bullet_1=0
'otnimaetsa jizn u protivnika i on peremeshaetsya
Enemy_1--
If Enemy_1>0 Then
MoveSprite Enemy1,128+RND(304),128+RND(112)
Else
MoveSprite Enemy1,0,0
EndIf
EndIf
EndIf
EndIf
If explosion_1>0 Then GoSub Explode1
GoSub Timer60
return
Controller:
'Bit Hex Decimal Button
'0 &h001 1 Up
'1 &h002 2 Down
'2 &h004 4 Left
'3 &h008 8 Right
'4 &h010 16 B
'5 &h020 32 C
'6 &h040 64 A
'7 &h080 128 Start
'8 &h100 256 Z (6-Button)
'9 &h200 512 Y (6-Button)
'10 &h400 1024 X (6-Button)
'11 &h800 2048 Mode (6-Button)
c=j
j=joypad(0)
'Start
If j.7 and c.7=0 Then
goSub Pause
EndIf
'Left
If j.2 and j.0=0 and j.1=0 Then
propsprite tank,260+hfliptile(1),0
Body=2
If SpritePosX(tank)>128 Then ShiftSprite tank,-1-tankSpeed,0
EndIf
'Right
If j.3 and j.0=0 and j.1=0 Then
propsprite tank,260+vfliptile(1),0
Body=3
If SpritePosX(tank)<432 Then ShiftSprite tank,1+tankSpeed,0
EndIf
'Up
If j.0 and j.2=0 and j.3=0 Then
propsprite tank,256+hfliptile(1),0
Body=0
If SpritePosY(tank)>128 Then ShiftSprite tank,0,-1-tankSpeed
EndIf
'Down
If j.1 and j.2=0 and j.3=0 Then
propsprite tank,256+vfliptile(1),0
Body=1
If SpritePosY(tank)<336 Then ShiftSprite tank,0,1+tankSpeed
EndIf
'Left+Up+
If j.2 and j.0=1 and j.1=0 Then
propsprite tank,264+hfliptile(1),0
Body=4
If SpritePosX(tank)>128 and SpritePosY(tank)>128 Then ShiftSprite tank,-1-tankSpeed,-1-tankSpeed
EndIf
'Right+Up
If j.3 and j.0 and j.1=0 Then
propsprite tank,264,0
Body=5
If SpritePosX(tank)<432 and SpritePosY(tank)>128 Then ShiftSprite tank,1+tankSpeed,-1-tankSpeed
EndIf
'Right+Down
If j.0=0 and j.1 and j.3 Then
propsprite tank,264+vfliptile(1),0
Body=7
If SpritePosX(tank)<432 and SpritePosY(tank)<336 Then ShiftSprite tank,1+tankSpeed,1+tankSpeed
EndIf
'Left+Down
If j.1 and j.2 and j.3=0 Then
propsprite tank,264+vfliptile(1)+hfliptile(1),0
Body=6
If SpritePosX(tank)>128 and SpritePosY(tank)<336 Then ShiftSprite tank,-1-tankSpeed,1+tankSpeed
EndIf
'A button
If j.6 and bullet_1=0 Then
If Body=0 Then
'Pulya poyavlyaetsya vverhu
MoveSprite bullet1,SpritePosX(tank)+7,SpritePosY(tank)
bullet_1=1
ElseIf Body=1 Then
'Pulya poyavlyaetsya vnuzu
MoveSprite bullet1,SpritePosX(tank)+7,SpritePosY(tank)+16
bullet_1=2
ElseIf Body=2 Then
'Pulya poyavlyaetsya slevo
MoveSprite bullet1,SpritePosX(tank),SpritePosY(tank)+7
bullet_1=3
ElseIf Body=3 Then
'Pulya poyavlyaetsya spravo
MoveSprite bullet1,SpritePosX(tank)+16,SpritePosY(tank)+7
bullet_1=4
ElseIf Body=4 Then
MoveSprite bullet1,SpritePosX(tank)+2,SpritePosY(tank)
bullet_1=5
ElseIf Body=5 Then
MoveSprite bullet1,SpritePosX(tank)+14,SpritePosY(tank)
bullet_1=6
ElseIf Body=6 Then
MoveSprite bullet1,SpritePosX(tank)+2,SpritePosY(tank)+15
bullet_1=7
ElseIf Body=7 Then
MoveSprite bullet1,SpritePosX(tank)+14,SpritePosY(tank)+15
bullet_1=8
EndIf
End If
Return
Explode1:
explosion_1--
If explosion_1=0 Then MoveSprite explosion1,0,480
return
Pause:
Sleep 1, TVBLANK
' MoveSprite Pause0,284,240
while 1
c=j
j=joypad(0)
'Start
If j.7 and c.7=0 Then
Return
EndIf
wend
'End Pause
Timer60:
'''''''TIMER'''''''''
Frame++
if Frame=60 then
Frame=0
Sec++
' Sec=Sec+1
endif
if Sec=60 then
Sec=0
Min++
' Min=Min+1
endif
if Min=60 then
Min=0
' Min=Min+1
endif
''''''TIMER END''''''
Return
palette0:
' dataint $0000,$0EEC,$0864,$0420,$0642,$0280,$0CA8,$000E
' dataint $0200,$0000,$0000,$0000,$0000,$0000,$0000,$0000
' dataint $f0f,$066,$fff,$29e,$9ee,$a0a,$05a,$aaa
' dataint $555,$f55,$5f5,$ff5,$55f,$f5f,$5ff,$fff
' datafile pal.BIN,BIN
dataint $000,$b44,$d99,$fbb,$fff,$666,$444,$222
dataint $00f,$290,$200,$420,$642,$964,$db9,$ffd
palette1:
' dataint $0000,$0CCA,$0642,$0220,$0422,$0260,$0C86,$000C
' dataint $0200,$0000,$0000,$0000,$0000,$0000,$0000,$0000
' dataint $000,$b44,$d99,$fbb,$fff,$666,$444,$222
' dataint $00f,$290,$200,$420,$642,$964,$db9,$ffd
dataint $f0f,$000,$ff0,$1a9,$166,$444,$222,$033
dataint $2dc,$888,$ccc,$00f,$55f,$f5f,$5ff,$fff
ExploPal:
dataint $f0f,$000,$fff,$705,$23b,$a0a,$05a,$aaa
dataint $555,$f55,$5f5,$ff5,$55f,$f5f,$5ff,$fff
TankTiles: datafile TankSprite1.BIN,BIN
' datalong $00000001
' datalong $00000001
' datalong $00000001
' datalong $00100007
' datalong $02100001
' datalong $02600201
' datalong $22600621
' datalong $22600621
' datalong $22500666
' datalong $25600646
' datalong $26617886
' datalong $26261186
' datalong $26266282
' datalong $26266282
' datalong $26600004
' datalong $04400000
' datalong $20000000
' datalong $20000000
' datalong $40000000
' datalong $70000600
' datalong $20000230
' datalong $20200230
' datalong $22600433
' datalong $32600433
' datalong $36600533
' datalong $34600453
' datalong $68876443
' datalong $68664343
' datalong $28644343
' datalong $28644343
' datalong $40000443
' datalong $00000330
' datalong $03333333
' datalong $34444453
' datalong $34333445
' datalong $00444600
' datalong $00446700
' datalong $00666866
' datalong $00888846
' datalong $04226633
' datalong $04226666
' datalong $00888846
' datalong $00221866
' datalong $00661700
' datalong $00666100
' datalong $46222665
' datalong $46666652
' datalong $02222222
' datalong $33000000
' datalong $33330000
' datalong $44226000
' datalong $00000000
' datalong $00000000
' datalong $66200000
' datalong $22000000
' datalong $32227422
' datalong $11117111
' datalong $22000000
' datalong $66200000
' datalong $00000000
' datalong $00000000
' datalong $66611000
' datalong $22220000
' datalong $22000000
EnemyTiles: datafile EnemyTiles.BIN,BIN
bulletData: datafile Snaryad.BIN,BIN
ExplosionTiles: datafile Explosion.BIN,BIN
Screenshots here:
TODO:
- Add many another types of enemies and make them active.
- Make shoot direction independent on tank moving direction
- Add the secondary weapon - machine gun (its shoot direction must be independent on main cannon shoot direction also)
- Take a new fully original graphics (screen objects size proportions must be same as proportions in the Shock Troopers)
- Create a background
- Create a huge complex levels with a several ways of walkthrough (like a levels in Metal Slug 3)
- List of planned changes will complement and refine in prospect
My TDS.rar (13.66 KB)