188 lines
2.8 KiB
QBasic
188 lines
2.8 KiB
QBasic
REM SmallBASIC
|
||
REM Small RL game forked of my Robotfindskitten game
|
||
REM BY ASCIIBENEFACTOR
|
||
rem unfinished !
|
||
|
||
|
||
REM GET DICT FILE WITH ITEM NAMES
|
||
|
||
' x:28,y14
|
||
linenb=10
|
||
colnb=18
|
||
win=false
|
||
score=0
|
||
pl={hp:30,hpx:30,name:"testacles",
|
||
dmg:3}
|
||
mob={}
|
||
robx=fix(rnd*colnb)
|
||
roby=fix(rnd*linenb)
|
||
kitx=fix(rnd*colnb)
|
||
kity=fix(rnd*linenb)
|
||
kitchar = charget
|
||
' amount mob
|
||
amob = 7
|
||
' amount thrash (items)
|
||
amount = 5
|
||
endgame=false
|
||
thrash = array("{0:{}}")
|
||
map={}
|
||
|
||
rem prg start
|
||
genThrash(amount)
|
||
borderscr()
|
||
rem grafx loop waiting for win
|
||
repeat
|
||
if robx = kitx AND roby = kity then
|
||
win=true
|
||
endgame=true
|
||
locate linenb,1
|
||
print " You found kitten!"
|
||
fi
|
||
printobj()
|
||
printui()
|
||
printrob()
|
||
collscan()
|
||
|
||
|
||
kbctrl
|
||
|
||
until win
|
||
|
||
|
||
REM ======FUNCTION SPACE =========-
|
||
|
||
|
||
sub remtrash(x,y)
|
||
locate thrash[y].y,thrash[x].x
|
||
? " "
|
||
end
|
||
|
||
sub collscan()
|
||
for i = 1 to amount
|
||
if robx=thrash[i].x and roby=thrash[i].y then
|
||
locate linenb+3,2
|
||
print thrash[i].text
|
||
thrash[i].active = false
|
||
fi
|
||
next
|
||
end
|
||
|
||
sub kbctrl()
|
||
kb = inkey
|
||
' delete old rob
|
||
locate roby,robx
|
||
? " "
|
||
select case kb
|
||
case "h"
|
||
if robx > 0 then
|
||
robx = robx-1
|
||
dir="x-"
|
||
fi
|
||
case "j"
|
||
if roby < linenb then
|
||
roby = roby+1
|
||
dir="x+"
|
||
fi
|
||
case "k"
|
||
if roby > 0 then
|
||
roby = roby-1
|
||
dir="y-"
|
||
fi
|
||
case "l"
|
||
if robx < colnb then
|
||
robx = robx+1
|
||
dir="y+"
|
||
fi
|
||
case "q"
|
||
print "testt"
|
||
end select
|
||
printrob()
|
||
end
|
||
|
||
sub printui()
|
||
locate linenb+2,1
|
||
print "HP: "+pl.hp
|
||
locate linenb+2,8
|
||
? "dmg"+pl.dmg
|
||
locate linenb+3,1
|
||
print pl.name
|
||
end
|
||
|
||
sub printrob()
|
||
locate roby,robx
|
||
print "@"
|
||
end
|
||
|
||
|
||
sub printobj()
|
||
rem print thrash
|
||
for it=1 to amount
|
||
if thrash[it].active then
|
||
local objx = thrash[it].x
|
||
local objy = thrash[it].y
|
||
locate objy,objx
|
||
print thrash[it].ch
|
||
else
|
||
thrash[it].x = 0
|
||
thrash[it].y = 0
|
||
fi
|
||
next
|
||
rem print kitty
|
||
locate kity,kitx
|
||
print kitchar
|
||
|
||
end
|
||
|
||
func charget()
|
||
select case fix(rnd*6)
|
||
case 1
|
||
return "&"
|
||
case 2
|
||
return "%"
|
||
case 3
|
||
return "#"
|
||
case 4
|
||
return "?"
|
||
case 5
|
||
return "<22>"
|
||
case 6
|
||
return "$"
|
||
end select
|
||
end
|
||
|
||
rem Items are represented by thrash
|
||
sub genthrash(amount)
|
||
for index = 1 to amount
|
||
local tx = fix(rnd*colnb)
|
||
local ty = fix(rnd*linenb)
|
||
thrash[index].x = tx
|
||
thrash[index].y = ty
|
||
thrash[index].ch = charget
|
||
thrash[index].text = "lazy"
|
||
thrash[index].active = true
|
||
rem thrash[index].item = get
|
||
next
|
||
end
|
||
|
||
func textget()
|
||
r = rnd()*len(dict)
|
||
return 'placeholder'
|
||
end
|
||
|
||
sub borderscr()
|
||
cls
|
||
for i = 0 to linenb+1
|
||
locate i+1,colnb+1
|
||
? "X"
|
||
for i2 = 0 to colnb+1
|
||
locate linenb+1,i2
|
||
print "X"
|
||
next
|
||
next
|
||
end
|
||
|
||
func genmob(lvl)
|
||
for i = 0 to amob
|
||
pmob[i] = {hp:30,name:jello}
|
||
next
|
||
end |