FTL
Retro Member
- Joined
- 4 Ιουλ 2007
- Μηνύματα
- 187
- Αντιδράσεις
- 11
Mου αρέσει το Topic αρκετά, ασχολούμαι ενεργά με προγραμματισμό.
Μια μικρή συνεισφορά στο 'Game Programming...the old way'
Ενα μικρό πάζλ που γραμμένο στην Yabasic, έχω κάνει μια version και στο Flash σε Actionscript, θα την βρείτε στην ιστοσελίδα μου.
Με τα βελάκια του πληκτρολογίου πετάτε απο τοίχο σε τοίχο και σκοπός σας είναι να μαζέψετε όλα τα κόκκινα διαμάντια.
Θα διαπιστώσετε ότι δεν είναι τόσο εύκολο όσο ακούγεται.
Το μπλε διαμάντι θα σας βοηθήσει, αλλάξτε την θέση σας με αυτό χρησιμοποιώντας το πλήκτρο space όποια στιγμή θέλετε.
Πλήκτρο 'r' για restart
Δεν είναι τίποτα ιδιαίτερο, ένα coffe project για διασκέδαση που έγραψα μαζί με την συζυγό μου.
Ακολουθεί ο πλήρες κώδικας, για όσους θέλουν να τον τρέξουν στην Yabasic, ένα screenshot και το εκτελέσιμο για Windows.

Download
Μια μικρή συνεισφορά στο 'Game Programming...the old way'
Ενα μικρό πάζλ που γραμμένο στην Yabasic, έχω κάνει μια version και στο Flash σε Actionscript, θα την βρείτε στην ιστοσελίδα μου.
Με τα βελάκια του πληκτρολογίου πετάτε απο τοίχο σε τοίχο και σκοπός σας είναι να μαζέψετε όλα τα κόκκινα διαμάντια.
Θα διαπιστώσετε ότι δεν είναι τόσο εύκολο όσο ακούγεται.
Το μπλε διαμάντι θα σας βοηθήσει, αλλάξτε την θέση σας με αυτό χρησιμοποιώντας το πλήκτρο space όποια στιγμή θέλετε.
Πλήκτρο 'r' για restart
Δεν είναι τίποτα ιδιαίτερο, ένα coffe project για διασκέδαση που έγραψα μαζί με την συζυγό μου.
Ακολουθεί ο πλήρες κώδικας, για όσους θέλουν να τον τρέξουν στην Yabasic, ένα screenshot και το εκτελέσιμο για Windows.
Κώδικας:
wall$ = "rgb 20,20:660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900660000ff9900ff9900ff9900"
redD$ = "rgb 20,20:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffcc00ffcc00ffcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffcc00990000990000990000ffcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffcc00cc0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000ff0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000ff0000ff0000ff0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000ff0000ff0000ff0000ff0000ff0000cc0000cc0000cc0000990000ffcc33000000000000000000000000000000ffcc00990000cc0000cc0000cc0000ff0000ff0000ff0000ff0000ff0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000ff0000ff0000ff0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000ff0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000000000000000000000000000000000000000ffcc00990000cc0000cc0000cc0000990000ffcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffcc00990000990000990000ffcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffcc00ffcc00ffcc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
blueD$ = "rgb 20,20:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006699ff6699ff6699ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006699ff0033cc0033cc0033cc6699ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000006699ff0033cc0033cc0033cc0033cc0033cc6699ff0000000000000000000000000000000000000000000000000000000000000000000000006699ff3366cc0033cc0033cc0033cc0033cc0033cc0033cc6699ff0000000000000000000000000000000000000000000000000000000000006699ff0033cc0033cc0033cc0033cc00ccff0033cc0033cc0033cc3366cc6699ff0000000000000000000000000000000000000000000000006699ff3366cc0033cc0033cc0033cc00ccff00ccff00ccff0033cc0033cc0033cc3366cc6699ff0000000000000000000000000000000000006699ff0033cc0033cc0033cc0033cc00ccff00ccff00ccff00ccff00ccff0033cc0033cc0033cc0033cc6699ff0000000000000000000000000000006699ff0033cc0033cc0033cc0033cc00ccff00ccff00ccff00ccff00ccff0033cc0033cc0033cc0033cc6699ff0000000000000000000000000000000000006699ff3366cc0033cc0033cc0000ff00ccff00ccff00ccff0000ff0033cc0033cc3366cc6699ff0000000000000000000000000000000000000000000000006699ff3366cc0033cc0033cc0033cc00ccff0033cc0033cc0033cc3366cc6699ff0000000000000000000000000000000000000000000000000000000000006699ff3366cc0033cc0033cc0033cc0033cc0033cc6633ff6699ff0000000000000000000000000000000000000000000000000000000000000000000000006699ff3366cc0033cc0033cc0033cc3366cc6699ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000006699ff0033cc0033cc0033cc6699ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006699ff6699ff6699ff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
char$ = "rgb 20,20:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660000660000660000660000660000660000660000660000660000660000660000660000000000000000000000000000000000000000000000660000660000ff6600ff6600ff6600ff6600ff6600ff6600ff6600ff6600ff6600ff6600660000660000000000000000000000000000000000660000660000ff6600ff6600ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff6600ff6600660000660000000000000000000000000000660000ff6600ff6600ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff6600ff6600660000000000000000000000000000660000ff6600ff9900ff9900cc3300cc3300cc3300ff9900ff9900cc3300cc3300cc3300ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff9900ff9900cc3300660033cc3300ff9900ff9900cc3300660033cc3300ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff9900ff9900cc3300cc3300cc3300ff9900ff9900cc3300cc3300cc3300ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff9900ff9900ff9900ff9900ff9900cc3300cc3300ff9900ff9900ff9900ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff9900ff9900ff9900ff9900ff9900cc3300cc3300ff9900ff9900ff9900ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff9900ff9900cc3300cc3300ff9900ff9900ff9900ff9900cc3300cc3300ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff9900ff9900cc3300cc3300ff9900ff9900ff9900ff9900cc3300cc3300ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff9900ff9900ff9900cc3300cc3300cc3300cc3300cc3300cc3300ff9900ff9900ff9900ff6600660000000000000000000000000000660000ff6600ff6600ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff6600ff6600660000000000000000000000000000660000660000ff6600ff6600ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff9900ff6600ff6600660000660000000000000000000000000000000000660000660000ff6600ff6600ff6600ff6600ff6600ff6600ff6600ff6600ff6600ff6600660000660000000000000000000000000000000000000000000000660000660000660000660000660000660000660000660000660000660000660000660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
clear screen
open window 240,180
backcolor 0,0,0
clear window
dim map(12,9)
dim diamond(12,9)
level = 1
size = 20
playGame = 1
doWelcome()
buildMap(level)
buildChar()
buildBlue()
do
k$ = inkey$
if playGame then
if k$ = "up" then playGame = 0 : moveUp()
elsif k$ = "down" then playGame = 0 : moveDown()
elsif k$ = "left" then playGame = 0 : moveLeft()
elsif k$ = "right" then playGame = 0 : moveRight()
elsif k$ = "r" then playGame = 0 :level = level - 1 : nextLevel()
elsif asc(k$) = 32 then playGame = 0 : swapPlaces()
elsif k$ = "esc" then exitGame()
fi
fi
loop
sub doWelcome()
clear screen
print "D-Star is a freeware Puzzle game for Windows."
print "Written using Yabasic v2.763, an intepreted Basic language."
print "The goal is to move using arrows and collect all red diamonds."
print "The blue diamond will help you, use space to switch position."
print "Hit 'r' to reset if mess, D-Star is an old game remake."
print
print "Nick Kouvaris"
print color("red") "freestuff.gr/lightforce"
updateLabel()
end sub
sub buildMap(lv)
local x,y,r
switch (lv)
case 1
restore room1
break
case 2
restore room2
break
case 3
restore room3
break
case 4
restore room4
break
case 5
restore room5
break
case 6
restore room6
break
case 7
restore room7
break
case 8
restore room8
break
case 9
restore room9
break
case 10
restore room10
break
end switch
px = 4 : py = 7
bx = 6 : by = 7
for y = 0 to 8
for x = 0 to 11
read r
map(x,y) = r
diamond(x,y) = 0
if r = 1 then putbit wall$,(x*size),(y*size)
elsif r = 2 then
putbit redD$,(x*size),(y*size)
diamond(x,y) = 1
map(x,y) = 0
fi
next
next
end sub
sub buildChar()
putbit char$,(px*size),(py*size)
end sub
sub buildBlue()
putbit blueD$,(bx*size),(by*size)
map(bx,by) = 1
end sub
sub swapPlaces()
local tempX,tempY
tempX = px
tempY = py
px = bx
py = by
bx = tempX
by = tempY
putbit char$,(px*size),(py*size)
putbit blueD$,(bx*size),(by*size)
map(px,py) = 0
map(bx,by) = 1
playGame = 1
end sub
sub moveUp()
local x,f,win
f = map(px,(py-1))
if f = 1 then
win = checkWin()
if win = 1 then playGame = 0 : nextLevel() : return
else
playGame = 1
return
fi
fi
if f = 0 then
if diamond(px,(py-1)) = 1 then diamond(px,(py-1)) = 0 : fi
for x = 0 to size step 0.5
putbit char$,(px*size),((py*size) - x)
next
fi
py = py - 1
moveUp()
end sub
sub moveDown()
local x, f,win
f = map(px,(py+1))
if f = 1 then
win = checkWin()
if win = 1 then playGame = 0 : nextLevel() : return
else
playGame = 1
return
fi
fi
if f = 0 then
if diamond(px,(py+1)) = 1 then diamond(px,(py+1)) = 0 : fi
for x = 0 to size step 0.5
putbit char$,(px*size),((py*size) + x)
next
fi
py = py + 1
moveDown()
end sub
sub moveRight()
local x, f, win
f = map((px+1),py)
if f = 1 then
win = checkWin()
if win = 1 then playGame = 0 : nextLevel() : return
else
playGame = 1
return
fi
fi
if f = 0 then
if diamond((px+1),py) = 1 then diamond((px+1),py) = 0 : fi
for x = 0 to size step 0.5
putbit char$,((px*size) + x),(py*size)
next
fi
px = px + 1
moveRight()
end sub
sub moveLeft()
local x, f, win
f = map((px-1),py)
if f = 1 then
win = checkWin()
if win = 1 then playGame = 0 : nextLevel() : return
else
playGame = 1
return
fi
fi
if f = 0 then
if diamond((px-1),py) = 1 then diamond((px-1),py) = 0 : fi
for x = 0 to size step 0.5
putbit char$,((px*size) - x),(py*size)
next
fi
px = px - 1
moveLeft()
end sub
sub nextLevel()
clear window
level = level + 1
if level > 10 then
gameOver()
return
fi
buildMap(level)
buildChar()
buildBlue()
updateLabel()
playGame = 1
end sub
sub checkWin()
local x,y,f : f = 1
for y = 0 to 8
for x = 0 to 11
if diamond(x,y) = 1 then f = 0 :fi
next
next
return f
end sub
sub updateLabel()
print at(0,10) "D-Star:: Level: " + str$(level) + " "
end sub
sub exitGame()
exit
end sub
sub gameOver()
print "CONGRATULATIONS !"
print "You completed D-Star."
end
end sub
label room1
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,1,0,0,0,0,0,0,0,1,1
data 1,0,1,0,0,0,0,0,2,0,1,1
data 1,0,1,1,0,0,2,0,0,0,0,1
data 1,0,0,1,2,0,0,0,0,0,0,1
data 1,0,0,1,0,0,0,1,1,1,0,1
data 1,0,2,0,0,0,0,0,0,0,0,1
data 1,0,0,0,0,0,0,0,0,2,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room2
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,0,0,0,1,2,1
data 1,0,0,0,0,2,0,0,0,0,0,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,1,2,1,0,1,0,0,1,0,1,1
data 1,0,1,2,1,0,0,1,2,1,0,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,0,0,1,0,0,0,0,1,0,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room3
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,0,0,0,1,0,1
data 1,0,0,1,1,0,0,0,1,1,0,1
data 1,0,2,1,0,0,0,0,0,0,0,1
data 1,0,0,0,0,0,1,1,0,0,0,1
data 1,0,0,0,0,0,2,1,0,2,0,1
data 1,0,1,2,0,0,0,0,0,0,0,1
data 1,0,1,1,0,1,0,0,0,0,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room4
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,1,0,0,0,1,2,0,0,0,0,1
data 1,0,0,0,1,1,1,0,0,0,0,1
data 1,0,1,0,0,1,0,0,1,2,0,1
data 1,1,1,1,0,0,0,1,1,1,0,1
data 1,0,1,2,0,0,0,0,1,2,0,1
data 1,0,0,0,0,0,0,0,0,1,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room5
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,0,0,0,0,0,0,0,1
data 1,1,1,0,0,1,2,1,0,0,0,1
data 1,1,0,0,0,2,1,2,0,0,0,1
data 1,0,0,0,0,1,2,1,2,0,0,1
data 1,0,0,0,1,0,0,0,1,0,0,1
data 1,0,0,0,0,0,0,0,0,0,1,1
data 1,0,0,0,0,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room6
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,1,1,0,0,0,1
data 1,0,0,0,0,0,0,1,2,1,0,1
data 1,0,1,0,1,0,0,2,1,0,0,1
data 1,0,2,1,2,0,0,1,2,1,0,1
data 1,0,1,0,1,0,0,0,0,0,0,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,0,0,0,0,0,0,0,0,1,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room7
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,0,0,0,0,0,0,1
data 1,1,1,1,0,0,0,0,0,0,1,1
data 1,1,1,2,0,1,2,0,0,0,0,1
data 1,1,2,0,1,1,1,0,0,2,1,1
data 1,0,0,0,0,1,0,0,2,1,1,1
data 1,1,0,0,0,0,0,0,1,1,1,1
data 1,0,0,0,0,0,0,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room8
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,0,0,1,2,0,0,1,1,0,0,1
data 1,0,0,1,1,1,0,2,1,2,0,1
data 1,0,0,0,0,1,0,0,0,0,0,1
data 1,1,1,1,0,2,0,0,0,0,0,1
data 1,1,1,2,0,0,1,1,1,0,0,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room9
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,0,1,1,2,0,0,1,1,0,0,1
data 1,0,1,0,1,0,1,2,0,0,0,1
data 1,0,1,0,1,0,2,1,2,0,0,1
data 1,0,1,0,1,0,0,2,1,0,0,1
data 1,0,1,1,0,0,1,1,0,0,0,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1
label room10
data 1,1,1,1,1,1,1,1,1,1,1,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,0,0,1,0,0,1,1,0,0,0,1
data 1,0,1,0,1,0,0,2,1,0,0,1
data 1,0,2,1,2,0,0,1,2,0,0,1
data 1,0,1,0,1,0,0,2,1,0,0,1
data 1,0,0,1,0,0,1,1,0,0,0,1
data 1,0,0,0,0,0,0,0,0,0,0,1
data 1,1,1,1,1,1,1,1,1,1,1,1

Download