Posts: 167
Threads: 11
Joined: Feb 2024
Reputation:
2
just curious
anyone tried?
Posts: 220
Threads: 72
Joined: Nov 2023
Reputation:
0
(01-08-2026, 06:13 PM) aurel Wrote: just curious
anyone tried?
Sorry. I have been busy recently and have not tried the example. Perhaps you need to promote Micro(A) in other places if you want a lot of people to test your Micro(A) and examples. Setting up a page on Itch may be a good way to introduce Micro(A) to the public Just like this group of BASIC authors. Itch looks popular among BASIC authors.
https://itch.io/t/5671476/basic-dialects-on-itch
Posts: 424
Threads: 57
Joined: Nov 2023
Reputation:
3
(01-08-2026, 06:13 PM) aurel Wrote: just curious
anyone tried?
I've downloaded the micro(A) and run the deepCoin
However, I found this line that the
handle player movement (not implemented yet) ....
Code:
' Handle player movement (not implemented here)
Posts: 167
Threads: 11
Joined: Feb 2024
Reputation:
2
yes is not
but that is not problematic
my problem is blinking 2 sprites which move eyes in direction
other two not blinking
i will add code for moving player
Posts: 167
Threads: 11
Joined: Feb 2024
Reputation:
2
01-09-2026, 04:47 PM
(This post was last modified: 01-09-2026, 05:37 PM by aurel .)
here is code with player moving handler
Code:
'Deep Coin by DeepAi and Aurel 6.1.2026
mode 1 : wcolor 0,0,0: fcolor 192,192,192 : swap
' Load images at the start
ptr img0,img1,img2,img3,img4,img5,img6
ptr wmKeyDown
LoadImg img0, "ghost.bmp", 0, 32, 32, 24
LoadImg img1, "hero.bmp", 0, 32, 32, 24
LoadImg img2, "ghostRight.bmp", 0, 32, 32, 24
LoadImg img3, "ghostLeft.bmp", 0, 32, 32, 24
LoadImg img4, "ghostDown.bmp", 0, 32, 32, 24
LoadImg img5, "ghostUp.bmp", 0, 32, 32, 24
LoadImg img6, "coin2.bmp", 0, 32, 32, 24
var score ,i,c,r,p,spriteXW,spriteYH, xdr[4], ydr[4], spriteXEn, spriteYEn
var spriteWEn, spriteHEn , spriteXWEn , spriteYHEn ,enemyIndex
var true ,coinXW,coinYH,xedge,yedge: true = -1
' Define arrays for sprite properties
var spriteX[5], spriteY[5], spriteWidth[5], spriteHeight[5]
var spriteSpeedX[5], spriteSpeedY[5]
var dir1,dir2,dir3,dir4,CELLSIZE,wp
' Initialize player sprite at index 1
spriteX[1] = 300
spriteY[1] = 200
spriteWidth[1] = 32
spriteHeight[1] = 32
' Initialize enemy(ghost) sprites at indices 2 to 5
spriteX[2] = 352
spriteY[2] = 192
spriteWidth[2] = 32
spriteHeight[2] = 32
spriteSpeedX[2] = 1
spriteSpeedY[2] = 1
spriteX[3] = 192
spriteY[3] = 352
spriteWidth[3] = 32
spriteHeight[3] = 32
spriteSpeedX[3] = 1
spriteSpeedY[3] = 1
spriteX[4] = 480
spriteY[4] = 192
spriteWidth[4] = 32
spriteHeight[4] = 32
spriteSpeedX[4] = 1
spriteSpeedY[4] = 1
spriteX[5] = 192
spriteY[5] = 480
spriteWidth[5] = 32
spriteHeight[5] = 32
spriteSpeedX[5] = 1
spriteSpeedY[5] = 1
' Initialize coins at indices 6 to 8
var coinX[3], coinY[3], coinWidth[3], coinHeight[3]
coinX[1] = 200
coinY[1] = 100
coinX[2] = 600
coinY[2] = 200
coinX[3] = 400
coinY[3] = 400
coinWidth[1] = 32
coinHeight[1] = 32
coinWidth[2] = 32
coinHeight[2] = 32
coinWidth[3] = 32
coinHeight[3] = 32
' SET SCREEN 800, 536 , sprite size 32
xedge = 800 : yedge = 536 : CELLSIZE = 32
' Initialize score
score = 0
' Main game loop -------------------------------------------------------
LABEL mainLoop
'CLS
RECT true, true , 800, 600
' Move enemy sprites using WHILE loop
i = 2
WHILE i < 6
if i = 2 : dir1=RAND(4) : moveGhost1() : endif
if i = 3 : dir2=RAND(4) : moveGhost2() : endif
if i = 4 : dir3=RAND(4) : moveGhost3() : endif
if i = 5 : dir4=RAND(4) : moveGhost4() : endif
i = i + 1
WEND
' Handle player movement
hWparam wp
'vkLEFT
if wp = 37 : if spriteX[1] > 0 : spriteX[1] = spriteX[1] - 32 : endif : endif
'vkRIGHT
if wp = 39 : if spriteX[1] < 736 : spriteX[1] = spriteX[1] + 32 : endif : endif
'vkUP
if wp = 38 : if spriteY[1] > 0 : spriteY[1] = spriteY[1] - 32 : endif : endif
'vkDOWN
if wp = 40 : if spriteY[1] < 420 : spriteY[1]= spriteY[1] + 32 : endif : endif
' Check for collisions with enemies using WHILE loop
enemyIndex = 2
WHILE enemyIndex < 6
spriteXW = spriteX[1] + spriteWidth[1]
spriteYH = spriteY[1] + spriteHeight[1]
spriteXEn = spriteX[enemyIndex]
spriteYEn = spriteY[enemyIndex]
spriteWEn = spriteWidth[enemyIndex]
spriteHEn = spriteHeight[enemyIndex]
spriteXWEn = spriteXEn + spriteWEn
spriteYHEn = spriteYEn + spriteHEn
IF spriteXW > spriteXEn & spriteX[1] < spriteXWEn & spriteYH > spriteYEn & spriteY[1] < spriteYHEn
' PRINT "Collision detected between player and enemy "; enemyIndex - 1
' score = score - 10
'PRINT 10,540,"SCORE : " : PRINT 100,540,score
ENDIF
'show enemy ...
' ShowImgT img2, spriteX[enemyIndex], spriteY[enemyIndex], 32, 32
enemyIndex = enemyIndex + 1
WEND
' Check for collisions with coins using WHILE loop
c = 1
WHILE c < 4
spriteXW = spriteX[1] + spriteWidth[1]
spriteYH = spriteY[1] + spriteHeight[1]
coinXW = coinX[c] + coinWidth[c]
coinYH = coinY[c] + coinHeight[c]
IF spriteXW > coinX[c] & spriteX[1] < coinXW & spriteYH > coinY[c] & spriteY[1] < coinYH
'PRINT "Player collected coin "; c
score = score + 10
' Reposition the coin
coinX[c] = RAND(800 - coinWidth[c])
coinY[c] = RAND(536 - coinHeight[c])
ENDIF
c = c + 1
WEND
'Draw Player (
ShowImgT img1, spriteX[1], spriteY[1], 32, 32
'show enemy ...
'ShowImgT img3, spriteX[i], spriteY[i], 32, 32
'PRINT "Score: "; score
fcolor 250,230,100
PRINT 10,540,"SCORE : " : PRINT 100,540,score
'Display swap GDI buffers
SWAP
' Delay for frame rate (depends on environment)
delay()
Goto mainLoop
func delay()
p=1 : while p < 156 : p = p + 0.01 : wend
endfn
func moveGhost1()
'ShowImgT img2, spriteX[2], spriteY[2], 32, 32
if dir1 = 0
ShowImgT img2,spriteX[2], spriteY[2], 32, 32
spriteX[2] = spriteX[2] + CELLSIZE
endif
if dir1 = 1
ShowImgT img3,spriteX[2], spriteY[2], 32, 32
spriteX[2] = spriteX[2] - CELLSIZE
endif
if dir1 = 2
ShowImgT img4,spriteX[2], spriteY[2], 32, 32
spriteY[2] = spriteY[2] + CELLSIZE
endif
if dir1 = 3
ShowImgT img5,spriteX[2], spriteY[2], 32, 32
spriteY[2] = spriteY[2] - CELLSIZE
endif
IF spriteX[2] < 0 : spriteX[2] = 0 : ENDIF : IF spriteX[2] > 736 : spriteX[2] = 736 : ENDIF
IF spriteY[2] < 0 : spriteY[2] = 0 : ENDIF : IF spriteY[2] > 448 : spriteY[2] = 448 : ENDIF
endfn
'----------
func moveGhost2()
'ShowImgT img0, spriteX[3], spriteY[3], 32, 32
IF dir2 = 0 : ShowImgT img2,spriteX[3], spriteY[3], 32, 32 :spriteX[3] = spriteX[3] + CELLSIZE : ENDIF ' Right
IF dir2 = 1 : ShowImgT img3,spriteX[3], spriteY[3], 32, 32 :spriteX[3] = spriteX[3] - CELLSIZE : ENDIF ' Left
IF dir2 = 2 : ShowImgT img4,spriteX[3], spriteY[3], 32, 32 :spriteY[3] = spriteY[3] + CELLSIZE : ENDIF ' Down
IF dir2 = 3 : ShowImgT img5,spriteX[3], spriteY[3], 32, 32 :spriteY[3] = spriteY[3] - CELLSIZE : ENDIF ' Up
IF spriteX[3] < 0 : spriteX[3] = 0 : ENDIF : IF spriteX[3] > 736 : spriteX[3] = 736 : ENDIF
IF spriteY[3] < 0 : spriteY[3] = 0 : ENDIF : IF spriteY[3] > 448 : spriteY[3] = 448 : ENDIF
endfn
'---------
func moveGhost3()
ShowImgT img0, spriteX[4], spriteY[4], 32, 32
IF dir3 = 0 : spriteX[4] = spriteX[4] + CELLSIZE : ENDIF ' Right
IF dir3 = 1 : spriteX[4] = spriteX[4] - CELLSIZE : ENDIF ' Left
IF dir3 = 2 : spriteY[4] = spriteY[4] + CELLSIZE : ENDIF ' Down
IF dir3 = 3 : spriteY[4] = spriteY[4] - CELLSIZE : ENDIF ' Up
IF spriteX[4] < 0 : spriteX[4] = 0 : ENDIF : IF spriteX[4] > 736 : spriteX[4] = 736 : ENDIF
IF spriteY[4] < 0 : spriteY[4] = 0 : ENDIF : IF spriteY[4] > 448 : spriteY[4] = 448 : ENDIF
endfn
'--------
func moveGhost4()
ShowImgT img0, spriteX[5], spriteY[5], 32, 32
IF dir4 = 0 : spriteX[5] = spriteX[5] + CELLSIZE : ENDIF ' Right
IF dir4 = 1 : spriteX[5] = spriteX[5] - CELLSIZE : ENDIF ' Left
IF dir4 = 2 : spriteY[5] = spriteY[5] + CELLSIZE : ENDIF ' Down
IF dir4 = 3 : spriteY[5] = spriteY[5] - CELLSIZE : ENDIF ' Up
IF spriteX[5] < 0 : spriteX[5] = 0 : ENDIF : IF spriteX[5] > 736 : spriteX[5] = 736 : ENDIF
IF spriteY[5] < 0 : spriteY[5] = 0 : ENDIF : IF spriteY[5] > 448 : spriteY[5] = 448 : ENDIF
endfn
I finally add coins
so game seems to me kind a completed ..yippi yeah
of course you must collect coins as much as you can avoiding ghosts
on first looks easy ..but you must try
ps-> don't forget to add coin2.bmp ..it is in attachment
code:
Code:
'Deep Coin by DeepAi and Aurel 6.1.2026
mode 1 : wcolor 0,0,0: fcolor 192,192,192 : swap
' Load images at the start
ptr img0,img1,img2,img3,img4,img5,img6
ptr wmKeyDown
LoadImg img0, "ghost.bmp", 0, 32, 32, 24
LoadImg img1, "hero.bmp", 0, 32, 32, 24
LoadImg img2, "ghostRight.bmp", 0, 32, 32, 24
LoadImg img3, "ghostLeft.bmp", 0, 32, 32, 24
LoadImg img4, "ghostDown.bmp", 0, 32, 32, 24
LoadImg img5, "ghostUp.bmp", 0, 32, 32, 24
LoadImg img6, "coin2.bmp", 0, 32, 32, 24
var score ,i,c,r,p,spriteXW,spriteYH, xdr[4], ydr[4], spriteXEn, spriteYEn
var spriteWEn, spriteHEn , spriteXWEn , spriteYHEn ,enemyIndex
var true ,coinXW,coinYH,xedge,yedge: true = -1
' Define arrays for sprite properties
var spriteX[5], spriteY[5], spriteWidth[5], spriteHeight[5]
var spriteSpeedX[5], spriteSpeedY[5]
var dir1,dir2,dir3,dir4,CELLSIZE,wp
' Initialize player sprite at index 1
spriteX[1] = 300
spriteY[1] = 200
spriteWidth[1] = 32
spriteHeight[1] = 32
' Initialize enemy(ghost) sprites at indices 2 to 5
spriteX[2] = 352
spriteY[2] = 192
spriteWidth[2] = 32
spriteHeight[2] = 32
spriteSpeedX[2] = 1
spriteSpeedY[2] = 1
spriteX[3] = 192
spriteY[3] = 352
spriteWidth[3] = 32
spriteHeight[3] = 32
spriteSpeedX[3] = 1
spriteSpeedY[3] = 1
spriteX[4] = 480
spriteY[4] = 192
spriteWidth[4] = 32
spriteHeight[4] = 32
spriteSpeedX[4] = 1
spriteSpeedY[4] = 1
spriteX[5] = 192
spriteY[5] = 480
spriteWidth[5] = 32
spriteHeight[5] = 32
spriteSpeedX[5] = 1
spriteSpeedY[5] = 1
' Initialize coins at indices 6 to 8
var coinX[3], coinY[3], coinWidth[3], coinHeight[3]
coinX[1] = 200
coinY[1] = 100
coinX[2] = 600
coinY[2] = 200
coinX[3] = 400
coinY[3] = 400
coinWidth[1] = 32
coinHeight[1] = 32
coinWidth[2] = 32
coinHeight[2] = 32
coinWidth[3] = 32
coinHeight[3] = 32
' SET SCREEN 800, 536 , sprite size 32
xedge = 800 : yedge = 536 : CELLSIZE = 32
' Initialize score
score = 0
' Main game loop -------------------------------------------------------
LABEL mainLoop
'CLS
RECT true, true , 800, 600
' Move enemy sprites using WHILE loop
i = 2
WHILE i < 6
if i = 2 : dir1=RAND(4) : moveGhost1() : endif
if i = 3 : dir2=RAND(4) : moveGhost2() : endif
if i = 4 : dir3=RAND(4) : moveGhost3() : endif
if i = 5 : dir4=RAND(4) : moveGhost4() : endif
i = i + 1
WEND
' Handle player movement
hWparam wp
'vkLEFT
if wp = 37 : if spriteX[1] > 0 : spriteX[1] = spriteX[1] - 32 : endif : endif
'vkRIGHT
if wp = 39 : if spriteX[1] < 736 : spriteX[1] = spriteX[1] + 32 : endif : endif
'vkUP
if wp = 38 : if spriteY[1] > 0 : spriteY[1] = spriteY[1] - 32 : endif : endif
'vkDOWN
if wp = 40 : if spriteY[1] < 420 : spriteY[1]= spriteY[1] + 32 : endif : endif
' Check for collisions with enemies using WHILE loop
enemyIndex = 2
WHILE enemyIndex < 6
spriteXW = spriteX[1] + spriteWidth[1]
spriteYH = spriteY[1] + spriteHeight[1]
spriteXEn = spriteX[enemyIndex]
spriteYEn = spriteY[enemyIndex]
spriteWEn = spriteWidth[enemyIndex]
spriteHEn = spriteHeight[enemyIndex]
spriteXWEn = spriteXEn + spriteWEn
spriteYHEn = spriteYEn + spriteHEn
IF spriteXW > spriteXEn & spriteX[1] < spriteXWEn & spriteYH > spriteYEn & spriteY[1] < spriteYHEn
' PRINT "Collision detected between player and enemy "; enemyIndex - 1
score = score - 10
'PRINT 10,540,"SCORE : " : PRINT 100,540,score
ENDIF
'show enemy ...
' ShowImgT img2, spriteX[enemyIndex], spriteY[enemyIndex], 32, 32
enemyIndex = enemyIndex + 1
WEND
' Check for collisions with coins using WHILE loop
c = 1
WHILE c < 4
spriteXW = spriteX[1] + spriteWidth[1]
spriteYH = spriteY[1] + spriteHeight[1]
coinXW = coinX[c] + coinWidth[c]
coinYH = coinY[c] + coinHeight[c]
IF spriteXW > coinX[c] & spriteX[1] < coinXW & spriteYH > coinY[c] & spriteY[1] < coinYH
'PRINT "Player collected coin "; c
score = score + 10
' Reposition the coin
coinX[c] = RAND(800 - coinWidth[c])
coinY[c] = RAND(448 - coinHeight[c])
ENDIF
'draw coin
ShowImgT img6, coinX[c], coinY[c], 32, 32
c = c + 1
WEND
'Draw Player (
ShowImgT img1, spriteX[1], spriteY[1], 32, 32
'PRINT "Score: "; score
fcolor 250,230,100
PRINT 10,540,"SCORE : " : PRINT 100,540,score
'G A M E O V E R
if score < 0 : goto gameOver : endif
'Display swap GDI buffers
SWAP
' Delay for frame rate (depends on environment)
delay()
Goto mainLoop
func delay()
'set delay to your pc
p=1 : while p < 156 : p = p + 0.01 : wend
endfn
func moveGhost1()
'ShowImgT img2, spriteX[2], spriteY[2], 32, 32
if dir1 = 0
ShowImgT img2,spriteX[2], spriteY[2], 32, 32
spriteX[2] = spriteX[2] + CELLSIZE
endif
if dir1 = 1
ShowImgT img3,spriteX[2], spriteY[2], 32, 32
spriteX[2] = spriteX[2] - CELLSIZE
endif
if dir1 = 2
ShowImgT img4,spriteX[2], spriteY[2], 32, 32
spriteY[2] = spriteY[2] + CELLSIZE
endif
if dir1 = 3
ShowImgT img5,spriteX[2], spriteY[2], 32, 32
spriteY[2] = spriteY[2] - CELLSIZE
endif
IF spriteX[2] < 0 : spriteX[2] = 0 : ENDIF : IF spriteX[2] > 736 : spriteX[2] = 736 : ENDIF
IF spriteY[2] < 0 : spriteY[2] = 0 : ENDIF : IF spriteY[2] > 448 : spriteY[2] = 448 : ENDIF
endfn
'----------
func moveGhost2()
'ShowImgT img0, spriteX[3], spriteY[3], 32, 32
IF dir2 = 0 : ShowImgT img2,spriteX[3], spriteY[3], 32, 32 :spriteX[3] = spriteX[3] + CELLSIZE : ENDIF ' Right
IF dir2 = 1 : ShowImgT img3,spriteX[3], spriteY[3], 32, 32 :spriteX[3] = spriteX[3] - CELLSIZE : ENDIF ' Left
IF dir2 = 2 : ShowImgT img4,spriteX[3], spriteY[3], 32, 32 :spriteY[3] = spriteY[3] + CELLSIZE : ENDIF ' Down
IF dir2 = 3 : ShowImgT img5,spriteX[3], spriteY[3], 32, 32 :spriteY[3] = spriteY[3] - CELLSIZE : ENDIF ' Up
IF spriteX[3] < 0 : spriteX[3] = 0 : ENDIF : IF spriteX[3] > 736 : spriteX[3] = 736 : ENDIF
IF spriteY[3] < 0 : spriteY[3] = 0 : ENDIF : IF spriteY[3] > 448 : spriteY[3] = 448 : ENDIF
endfn
'---------
func moveGhost3()
ShowImgT img0, spriteX[4], spriteY[4], 32, 32
IF dir3 = 0 : spriteX[4] = spriteX[4] + CELLSIZE : ENDIF ' Right
IF dir3 = 1 : spriteX[4] = spriteX[4] - CELLSIZE : ENDIF ' Left
IF dir3 = 2 : spriteY[4] = spriteY[4] + CELLSIZE : ENDIF ' Down
IF dir3 = 3 : spriteY[4] = spriteY[4] - CELLSIZE : ENDIF ' Up
IF spriteX[4] < 0 : spriteX[4] = 0 : ENDIF : IF spriteX[4] > 736 : spriteX[4] = 736 : ENDIF
IF spriteY[4] < 0 : spriteY[4] = 0 : ENDIF : IF spriteY[4] > 448 : spriteY[4] = 448 : ENDIF
endfn
'--------
func moveGhost4()
ShowImgT img0, spriteX[5], spriteY[5], 32, 32
IF dir4 = 0 : spriteX[5] = spriteX[5] + CELLSIZE : ENDIF ' Right
IF dir4 = 1 : spriteX[5] = spriteX[5] - CELLSIZE : ENDIF ' Left
IF dir4 = 2 : spriteY[5] = spriteY[5] + CELLSIZE : ENDIF ' Down
IF dir4 = 3 : spriteY[5] = spriteY[5] - CELLSIZE : ENDIF ' Up
IF spriteX[5] < 0 : spriteX[5] = 0 : ENDIF : IF spriteX[5] > 736 : spriteX[5] = 736 : ENDIF
IF spriteY[5] < 0 : spriteY[5] = 0 : ENDIF : IF spriteY[5] > 448 : spriteY[5] = 448 : ENDIF
endfn
Label gameOver
fcolor 250,250,250 : PRINT 150,540,"* * * G A M E O V E R * * *" : SWAP
Attached Files
coin2.bmp (Size: 3.05 KB / Downloads: 1)
Posts: 424
Threads: 57
Joined: Nov 2023
Reputation:
3
Posts: 167
Threads: 11
Joined: Feb 2024
Reputation:
2
so what you say ...?
for a noob in game programming
kind of work ..he he