The forum was in such a mode that I was bored. I coded anything stupid. Happily, Fred has decided a limit to 600 lines, that interrupted me !
Code: Select all
Global sw, sh, countDown = 300, life = 3, score = 0, coinQty = 0, trial = 1
Global Dim key.i(255)
Procedure keyb(i.i)
Protected r, ks = KeyboardPushed(i)
If ks And Not key(i)
r = 1
EndIf
key(i) = ks
ProcedureReturn r
EndProcedure
Procedure c31(r, g, b)
ProcedureReturn RGB(r * 255, g * 255, b * 255)
EndProcedure
Procedure c41(a, r, g, b)
ProcedureReturn RGBA(r * 255, g * 255, b * 255, a * 255)
EndProcedure
InitSprite()
InitKeyboard()
ExamineDesktops()
sw = DesktopWidth(0)
sh = DesktopHeight(0)
OpenScreen(sw, sh, 32, "", #PB_Screen_SmartSynchronization, DesktopFrequency(0) )
CreateSprite(0, 256, 128)
TransformSprite(0, 0, 0, sw, 0, sw, sh, 0, sh)
Global Dim p.L(3, 3) ; 4 palettes * 4 attributs * 32 bits = 1Kbits = 128-bytes palette (4 palettes)
Global Dim s.u(63, 7) ; 256 * 8 * 16 bits = 32Kbits = 1-kilobytes sprite (256 sprites)
Global Dim sp(255) ; 2 KB
Global Dim c.a(31, 15) ; 32 columns * 16 rows * 8 bits = 4Kbits text = 512-bytes text
For palette = 0 To 3
p(palette, 0) = RGBA(0, 0, 0, 0)
For color = 1 To 3
p(palette, color) = RGBA(Random(255), Random(255), Random(255), 255)
Next
Next
For char = 0 To 63
For charLine = 0 To 7
s(char, charLine) = Random($FFFF)
Next
Next
;- start
p(0, 0) = RGBA(%00000000, %00000000, %00000000, %11111111) ; décor arrière (opaque) 4 niveaux de bleus
p(0, 1) = RGBA(%00000000, %00000000, %01010101, %11111111)
p(0, 2) = RGBA(%00000000, %00000000, %10101010, %11111111)
p(0, 3) = RGBA(%00000000, %01010101, %11111111, %11111111)
p(1, 0) = RGBA(%00000000, %00000000, %00000000, %00000000) ; allié (semi opaque) transparent
p(1, 1) = RGBA(%00000000, %00000000, %01010101, %11111111) ; bleu
p(1, 2) = RGBA(%11111111, %00000000, %00000000, %11111111) ; rouge
p(1, 3) = RGBA(%11111111, %10101010, %01010101, %11111111) ; chair
p(2, 0) = RGBA(%00000000, %00000000, %00000000, %00000000) ; décor avant transp
p(2, 1) = RGBA(%00000000, %01010101, %00000000, %11111111) ; noir
p(2, 2) = RGBA(%00000000, %11111111, %00000000, %11111111) ; vert
p(2, 3) = RGBA(%11111111, %11111111, %11111111, %11111111) ; blanc
p(3, 0) = RGBA(%00000000, %00000000, %00000000, %00000000) ; ennemi transparent
p(3, 1) = RGBA(%01010101, %00000000, %00000000, %11111111) ; rouge sombre
p(3, 2) = RGBA(%11111111, %01010101, %00000000, %11111111) ; orange
p(3, 3) = RGBA(%11111111, %11111111, %00000000, %11111111) ; jaune
For i = 0 To 7
s(0, i) = 0
Next
s(1, 0) = %0011111111111100
s(1, 1) = %1000111111110010
s(1, 2) = %1010001111001010
s(1, 3) = %1010100000101010
s(1, 4) = %1010100000101010
s(1, 5) = %1010000101001010
s(1, 6) = %1000010101010010
s(1, 7) = %0001010101010100
s(2, 0) = %0101010100000000
s(2, 1) = %1111111101010101
s(2, 2) = %1110101011111111
s(2, 3) = %1110101010101010
s(2, 4) = %1010101010101010
s(2, 5) = %1010101010101010
s(2, 6) = %1010101001010101
s(2, 7) = %0101010100000000
s(3, 0) = %0000000000000000
s(3, 1) = %0101010101010101
s(3, 2) = %1111111111111111
s(3, 3) = %1010101010101010
s(3, 4) = %1010101010101010
s(3, 5) = %1010101010101010
s(3, 6) = %0101010101010101
s(3, 7) = %0000000000000000
s(4, 0) = %0000000101010100
s(4, 1) = %0101011111111101
s(4, 2) = %1111111010101011
s(4, 3) = %1010101010101010
s(4, 4) = %1010101010101010
s(4, 5) = %1010101010101010
s(4, 6) = %0101011010101001
s(4, 7) = %0000000101010100
s(5, 0) = %0000000001010101
s(5, 1) = %0101010111111111
s(5, 2) = %1111111110101010
s(5, 3) = %1010101010101010
s(5, 4) = %1010101010101001
s(5, 5) = %1010101010101001
s(5, 6) = %0101010110101001
s(5, 7) = %0000000001010101
s(6, 0) = %0011111111110000
s(6, 1) = %1111000000111100
s(6, 2) = %1111000000111100
s(6, 3) = %0011000000110000
s(6, 4) = %1111000000111100
s(6, 5) = %1111000000111100
s(6, 6) = %0011111111110000
s(6, 7) = %0000000000000000
s(7, 0) = %0000000000110000
s(7, 1) = %0000000000111100
s(7, 2) = %0000000000111100
s(7, 3) = %0000000000110000
s(7, 4) = %0000000000111100
s(7, 5) = %0000000000111100
s(7, 6) = %0000000000110000
s(7, 7) = %0000000000000000
s(8, 0) = %0011111111110000
s(8, 1) = %0000000000111100
s(8, 2) = %0000000000111100
s(8, 3) = %0011111111110000
s(8, 4) = %1111000000000000
s(8, 5) = %1111000000000000
s(8, 6) = %0011111111110000
s(8, 7) = %0000000000000000
s(9, 0) = %0011111111110000
s(9, 1) = %0000000000111100
s(9, 2) = %0000000000111100
s(9, 3) = %0011111111110000
s(9, 4) = %0000000000111100
s(9, 5) = %0000000000111100
s(9, 6) = %0011111111110000
s(9, 7) = %0000000000000000
s(10, 0) = %0011000000110000
s(10, 1) = %1111000000111100
s(10, 2) = %1111000000111100
s(10, 3) = %0011111111110000
s(10, 4) = %0000000000111100
s(10, 5) = %0000000000111100
s(10, 6) = %0000000000110000
s(10, 7) = %0000000000000000
s(11, 0) = %0011111111110000
s(11, 1) = %1111000000000000
s(11, 2) = %1111000000000000
s(11, 3) = %0011111111110000
s(11, 4) = %0000000000111100
s(11, 5) = %0000000000111100
s(11, 6) = %0011111111110000
s(11, 7) = %0000000000000000
s(12, 0) = %0011111111110000
s(12, 1) = %1111000000000000
s(12, 2) = %1111000000000000
s(12, 3) = %0011111111110000
s(12, 4) = %1111000000111100
s(12, 5) = %1111000000111100
s(12, 6) = %0011111111110000
s(12, 7) = %0000000000000000
s(13, 0) = %0011111111110000
s(13, 1) = %0000000000111100
s(13, 2) = %0000000000111100
s(13, 3) = %0000000000110000
s(13, 4) = %0000000000111100
s(13, 5) = %0000000000111100
s(13, 6) = %0000000000110000
s(13, 7) = %0000000000000000
s(14, 0) = %0011111111110000
s(14, 1) = %1111000000111100
s(14, 2) = %1111000000111100
s(14, 3) = %0011111111110000
s(14, 4) = %1111000000111100
s(14, 5) = %1111000000111100
s(14, 6) = %0011111111110000
s(14, 7) = %0000000000000000
s(15, 0) = %0011111111110000
s(15, 1) = %1111000000111100
s(15, 2) = %1111000000111100
s(15, 3) = %0011111111110000
s(15, 4) = %0000000000111100
s(15, 5) = %0000000000111100
s(15, 6) = %0011111111110000
s(15, 7) = %0000000000000000
s(16, 0) = %0000101010000000
s(16, 1) = %0010101010101000
s(16, 2) = %0011111101111100
s(16, 3) = %0000111111110000
s(16, 4) = %0000101010101011
s(16, 5) = %0011101010100010
s(16, 6) = %0000010101010110
s(16, 7) = %0000101000000000
s(17, 0) = %0000101010000000
s(17, 1) = %0010101010101000
s(17, 2) = %0011111101111100
s(17, 3) = %0000111111110000
s(17, 4) = %0000101010100000
s(17, 5) = %0000101011100000
s(17, 6) = %0000010101000000
s(17, 7) = %0000001010000000
s(18, 0) = %0000001010100000
s(18, 1) = %0010101010101000
s(18, 2) = %0011110111111100
s(18, 3) = %0000111111110000
s(18, 4) = %1110101010100000
s(18, 5) = %1000101010100000
s(18, 6) = %1001010101010000
s(18, 7) = %0000000010100000
s(19, 0) = %0000001010100000
s(19, 1) = %0010101010101000
s(19, 2) = %0011110111111100
s(19, 3) = %0000111111110000
s(19, 4) = %0000101010100000
s(19, 5) = %0000101110100000
s(19, 6) = %0000000101010000
s(19, 7) = %0000001010000000
s(20, 0) = %0000000101010000
s(20, 1) = %0001111111100100
s(20, 2) = %0011101010101000
s(20, 3) = %0111101111011101
s(20, 4) = %0111101110011101
s(20, 5) = %0111100101111000
s(20, 6) = %0001101111100100
s(20, 7) = %0000000101000000
s(21, 0) = %0000000000000000
s(21, 1) = %0000011111010000
s(21, 2) = %0000111010110000
s(21, 3) = %0000111111110000
s(21, 4) = %0000111110110000
s(21, 5) = %0000110101110000
s(21, 6) = %0000011111010000
s(21, 7) = %0000000101000000
s(22, 0) = %0000000000000000
s(22, 1) = %0000001010000000
s(22, 2) = %0000001111000000
s(22, 3) = %0000001111000000
s(22, 4) = %0000001111000000
s(22, 5) = %0000001111000000
s(22, 6) = %0000001010000000
s(22, 7) = %0000000000000000
s(23, 0) = %0000000000000000
s(23, 1) = %0000011111010000
s(23, 2) = %0000111010110000
s(23, 3) = %0000111010110000
s(23, 4) = %0000111010110000
s(23, 5) = %0000111001110000
s(23, 6) = %0000011111010000
s(23, 7) = %0000000101000000
s(24, 0) = %1010101010101010
s(24, 1) = %1000101111100010
s(24, 2) = %1010111010111010
s(24, 3) = %1010101010111010
s(24, 4) = %1010101111101010
s(24, 5) = %1010101010101010
s(24, 6) = %1000101111100010
s(24, 7) = %1010101010101010
s(25, 0) = %1010101010101010
s(25, 1) = %1000101010100010
s(25, 2) = %1010101010101010
s(25, 3) = %1010101010101010
s(25, 4) = %1010101010101010
s(25, 5) = %1010101010101010
s(25, 6) = %1000101010100010
s(25, 7) = %1010101010101010
s(26, 0) = %0111111110101001
s(26, 1) = %0111101010101001
s(26, 2) = %0111101010101001
s(26, 3) = %0111101010101001
s(26, 4) = %0001111010100100
s(26, 5) = %0001111010100100
s(26, 6) = %0001111010100100
s(26, 7) = %0001111010100100
s(27, 0) = %0001111010100100
s(27, 1) = %0001111010100100
s(27, 2) = %0001111010100100
s(27, 3) = %0001111010100100
s(27, 4) = %0001111010100100
s(27, 5) = %0001111010100100
s(27, 6) = %0001111010100100
s(27, 7) = %0001111010100100
s(28, 0) = %0001111010100100
s(28, 1) = %0001111010100100
s(28, 2) = %0001111010100100
s(28, 3) = %0111101010101001
s(28, 4) = %0111101010101001
s(28, 5) = %0111101010101001
s(28, 6) = %0111101010101001
s(28, 7) = %0001111010100100
s(29, 0) = %0001111010100100
s(29, 1) = %0001111010100100
s(29, 2) = %0001111010100100
s(29, 3) = %0001111010100100
s(29, 4) = %0011110101010100
s(29, 5) = %0111101010101001
s(29, 6) = %0111101010101001
s(29, 7) = %0111101001010101
S(30, 0) = %0011111011110000
S(30, 1) = %1101010101011100
S(30, 2) = %1101010100011100
S(30, 3) = %1001010001011000
S(30, 4) = %1101010001011100
S(30, 5) = %1101010001011100
S(30, 6) = %0011111011110000
S(30, 7) = %0000000000000000
S(31, 0) = %0000000000000000
S(31, 1) = %0011000000110000
S(31, 2) = %0000110111000000
S(31, 3) = %0000011101000000
S(31, 4) = %0000110111000000
S(31, 5) = %0011000000110000
S(31, 6) = %0000000000000000
S(31, 7) = %0000000000000000
S(30, 0) = %0000000000000000
S(30, 1) = %0000000000000000
S(30, 2) = %0010110000000000
S(30, 3) = %1011011011101000
S(30, 4) = %1000101111111010
S(30, 5) = %0000101010101001
S(30, 6) = %0000010101010100
S(30, 7) = %0011000100010011
S(31, 0) = %0000000000000000
S(31, 1) = %0000000000000000
S(31, 2) = %0010110000000000
S(31, 3) = %1011011011101000
S(31, 4) = %1000101111111010
S(31, 5) = %0000101010101001
S(31, 6) = %0000010101010100
S(31, 7) = %0000110000001100
For spp = 0 To 3
For spi = 0 To 63
i = spp << 6 | spi
sp(i) = CreateSprite(#PB_Any, 8, 8, #PB_Sprite_AlphaBlending)
If 1
StartDrawing(SpriteOutput(sp(i) ) )
DrawingMode(#PB_2DDrawing_AllChannels)
For y = 0 To 7
For x = 0 To 7
c = p(spp, (s(spi, y) >> (2 * x) ) & 3)
Box(y, x, 1, 1, c)
Next
Next
StopDrawing()
EndIf
xA = 0
yA = 0
xB = sw / 32
yB = sh / 16
TransformSprite(sp(i), xB, yA, xB, yB, xA, yB, xA, yA)
Next
Next
Procedure prnb(x, y, n, ln, pal) ; (pr)int (n)um(b)er (prnb)
a$ = Right(ReplaceString(Space(ln), " ", "0") + Str(Abs(n) ), ln)
For i = 1 To Len(a$)
a = Asc(Mid(a$, i, 1) ) - '0' + 6 + pal << 6
c(x + i - 1, y) = a
Next
EndProcedure
Procedure backMode1()
For x = 0 To 31
For y = 0 To 15
c(x, y) = 0
Next
c(x, 1) = 1
If Abs(x - 16) > 4
c(x, 4) = 1
EndIf
c(1, 2) = 5 + 128 ; green pipes
c(1, 3) = 5 + 128
c(1, 7) = 5 + 128
c(1, 11) = 5 + 128
c(0, 14) = 5 + 128
c(31, 2) = 2 + 128
c(31, 3) = 2 + 128
c(31, 7) = 2 + 128
c(31, 11) = 2 + 128
c(31, 14) = 2 + 128
If Abs(x - 16) > 6
c(x, 8) = 1
EndIf
If Abs(x - 16) > 3
c(x, 12) = 1
Else
c(x, 7) = 129 - 64
EndIf
c(x, 15) = 1
Next
c(0, 0) = 81
c(1, 0) = 95
prnb(5, 0, 00, 2, 3)
c(0, 1) = 154 - 128
For y = 2 To 11
c(0, y) = 155 - 128
Next
c(0, 12) = 157 - 128
EndProcedure
torSpeedX = 1
marX = 0
marY = 670
period = 1000 / 30
Repeat
Repeat
clock = ElapsedMilliseconds()
Delay(period - 1)
Until clock > alarm
alarm = clock + period
ExamineKeyboard()
ClearScreen(0)
If keyb(#PB_Key_Tab) Or trial
trial = 0
mode + 1
mode & 1
If mode = 1
backMode1()
EndIf
EndIf
If mode = 1 ; anims
prnb(1, 0, life, 2, 1)
coinCycle + 1
coinCycle & 3
If coinCycle = 0
coin + 1
coin & 3
c(4, 0) = 212 + coin
EndIf
If clock > timeAlarm
timeAlarm + 1000
countDown - 1
prnb(8, 0, countDown, 3, 2)
EndIf
hour = Val(FormatDate("%HH", Date() ) )
minu = Val(FormatDate("%ii", Date() ) )
prnb(12, 0, hour, 2, 0)
prnb(14, 0, minu, 2, 0)
prnb(17, 0, marY, 3, 2)
prnb(24, 0, score, 8, 0)
EndIf
If Keyb(#PB_Key_F12)
Blur ! 1
EndIf
SpriteQuality(Blur)
For ty = 0 To 15
For tx = 0 To 31
If mode = 0
c(tx, ty) = tx & $F | ty << 4
EndIf
DisplayTransparentSprite(sp(c(tx, ty) ), tx * xB, ty * yB)
Next
Next
If mode = 1
DisplaySprite(sp(156 - 128), 0, (y + 8) * yB / 8)
If vy < 4
vy + 1
EndIf
y + vy
If y > 88
y = 0
vy = 0
life - 1
EndIf
torY = 24
torY = 14*8
torTime ! 1
torX - torSpeedX
If torX < 0
torX = sw * 8 / xB
EndIf
jmpX = 0 - 1 - Sin(clock * clock)
jmpY = 0 - 1 - Cos(clock * clock)
DisplayTransparentSprite(sp(30 + torTime + 128), (torX) * xB / 8, (torY) * yB / 8)
If marVX < 0
marFlow = 2
Else
If marVX > 0
marFlow = 0
EndIf
EndIf
DisplayTransparentSprite(sp(16 + marTime + 64 + marFlow), marX, marY)
marMoving = 1
If KeyboardPushed(#PB_Key_Right)
If marVX < 24
marVX + 1
EndIf
Else
If marVX > 0
marVX - 1
EndIf
If KeyboardPushed(#PB_Key_Left)
If marVX > 0 - 24
marVX - 1
EndIf
Else
marMoving = 0
If marVX < 0
marVX + 1
EndIf
EndIf
EndIf
If marY < 670
marVY - 4
EndIf
If marY > 670
marY = 670
marVY = 0
EndIf
marY - marVY
If KeyboardPushed(#PB_Key_Up)
marVY = 16
EndIf
If marVX
marTime ! marMoving
marX + marVX
If marX > DesktopWidth(0)
marX - DesktopWidth(0)
Else
If marX < 0
marX + DesktopWidth(0)
EndIf
EndIf
EndIf
EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or keyb(#PB_Key_Tab)