@tukinem, post #30
Po drugie, Aminet bardziej służy chyba grom / programom dla systemu.
@tukinem, post #30
To po prostu mój odzew na komentarze, że jeśli Amiga 500, to tylko goła / koszerna
@Madman, post #38
utrzeć nosa gdyby chcieli korzystać z nośników cyfrowych typu karta SD/CF czy gotek
@Norbert, post #39
@tukinem, post #52
WBStartup
#WYTNIJSHAPY=0
CNIF #WYTNIJSHAPY=1
BitMap 0,80,64,1
LoadBitMap 0,"snake.iff"
GetaShape 10,0,0,73,48
For a=0 To 9
GetaShape a,a*4,48,4,5
Next
GetaShape 11,39,48,8,8
Free BitMap 0
SaveShapes 0,11,"GFX.SHP"
CEND
NEWTYPE .coords
x.w
y.w
End NEWTYPE
DEFTYPE .coords G
DEFTYPE .w score
DEFTYPE .b k,counter,bonus
Dim List moves.coords(512)
Dim map.b(21,21)
DefaultOutput
If Processor>0
NPrint "ONLY 68000 !!!"
End
EndIf
If FastFree>0
NPrint "NO FAST OR SLOW MEMORY !!!"
End
EndIf
If ExecVersion>33
NPrint "ONLY KICKSTART 1.2 !!!"
End
EndIf
If ChipFree>512000
NPrint "You don't need that much of CHIP RAM !!!"
End
EndIf
NPrint "WOW !!! You have a proper configuration"
NPrint "of your Amiga, but this game uses only 0,001%"
NPrint "of resources of your computer"
NPrint "so you can run another game..."
NPrint ""
NPrint "If you have a joystick, then press FIRE..."
While Joyb(1)=0
VWait
Wend
.LadujDane
LoadShapes 0,"GFX.SHP"
M.l = AllocMem_(FileSize("mus.mod"),2)
BLoad "mus.mod",M
MOVE.b #%01111000,d0
MOVE.b d0,$bfd100
NOP
NOP
ORI.b #%10000000,d0
MOVE.b d0,$bfd100
NOP
NOP
ANDI.b #%10000111,d0
MOVE.b d0,$bfd100
MTInit M,0,0
BitMap 0,192,192,1
InitPalette 0,2
PalRGB 0,0,$5,$c,$3
PalRGB 0,1,$3,$3,$2
VWait
BLITZ
Statement score{score.w}
Boxf 8,0,24,5,0
score$ = Str$(score)
While Len(score$)<4
score$ = "0"+score$
Wend
For a=1 To Len(score$)
Blit Val(Mid$(score$,a,1)),a LSL 2+4,0
Next
End Statement
Statement BONUS{}
SHARED map()
a.b = Rnd(22)
b.b = Rnd(22)
While map(a,b)=1
a.b = Rnd(22)
b.b = Rnd(22)
Wend
map(a,b)=2
Blit 11,a LSL 3+8 , b LSL 3+10
End Statement
InitCopList 0,64-NTSC*20,192,$1,8,2,-4
DisplayAdjust 0,-16,32,-32,64,-64
DisplayBitMap 0,0
DisplayPalette 0,0
CreateDisplay 0
; Ustawienie kolorow Copperem
For i.w = 0 To 189
DisplayRGB 0,0,i,$4+Rnd(2),$c+Rnd(2),$3+Rnd(2)
Next
JSR StartScreen
.MAIN
Repeat
TST.b frame
BNE.b 'minus
MOVE.b #2,frame
BRA 'endframe
'minus
SUBQ.b #1,frame
'endframe
VWait
ResetList moves()
If Peek.b(?frame)=0
If NextItem(moves())
Boxf moves()\x LSL 3+8,moves()\y LSL 3+10,moves()\x LSL 3+15,moves()\y LSL 3+17,0
If bonus=False
map(moves()\x,moves()\y) = 0
KillItem moves()
Else
bonus=False
EndIf
EndIf
Select k
Case 1 : G\y-1
Case 2 : G\y+1
Case 4 : G\x-1
Case 8 : G\x+1
End Select
G\x = QWrap(G\x,0,22)
G\y = QWrap(G\y,0,22)
Select map(G\x,G\y)
Case 1 : JSR GameOver
Case 2 : bonus = True : score+5 : score{score} : BONUS{}
For i = 0 To 189
DisplayRGB 0,0,i,$4+Rnd(2),$c+Rnd(2),$3+Rnd(2)
Next
DisplayPalette 0,0
End Select
If AddLast(moves())
moves()\x = G\x
moves()\y = G\y
map(moves()\x,moves()\y) = 1
EndIf
Boxf G\x LSL 3+8,G\y LSL 3+10,G\x LSL 3+15,G\y LSL 3+17,1
blockmove=False
EndIf
If RawStatus($45) : JSR StartScreen : EndIf
If blockmove=False
If Joyy(1)=-1 AND k<>2 Then k=1 : blockmove=True
If Joyx(1)=1 AND k<>4 Then k=8 : blockmove=True
If Joyx(1)=-1 AND k<>8 Then k=4 : blockmove=True
If Joyy(1)=1 AND k<>1 Then k=2 : blockmove=True
EndIf
Forever
.StartGame
Cls
Line 7,6,184,6,1
Line 7,7,184,7,1
Box 7,9,184,186,1
score = 0
k = 8
G\x = 10 : G\y = 10 : k = 8
For j=0 To 21
For i=0 To 21
map(i,j) = 0
Next
Next
ClearList moves()
score{score}
BONUS{}
RTS
.StartScreen
MTEnd
Cls
Blit 10,64,64
While RawStatus($45)
VWait
Wend
While NOT Joyb(1)=1
VWait
If RawStatus($45) Then End
Wend
MTPlay On
JSR StartGame
RTS
.GameOver
BitMapOutput 0
Locate 6,0
NPrint "GAME OVER"
While Joyb(1)=0
VWait
For i = 0 To 189
DisplayRGB 0,0,i,$4+Rnd(2),$c+Rnd(2),$3+Rnd(2)
Next
DisplayPalette 0,0
Wend
While Joyb(1)=1
VWait
Wend
JSR StartScreen
RTS
Even
frame
Dc.w 0 @karolb, post #56
@amikoksu, post #48
Dasz radę. Może być z doczytywaniem w trakcie rozgrywki.
@tukinem, post #58