HSPでゲームらしいゲームを作ったことない僕ですが、初めてそれっぽい何かを作ってみました。
HSPでゲームらしいゲームを作ったことない僕ですが、初めてそれっぽい何かを作ってみました。
#cmpopt varinit 1 #const global dispX 640 #const global dispY 480 #const global keyLeft 37 #const global keyRight 39 #const global keyJump 38 #const global margin 50 #const global fieldTop margin #const global fieldBottom dispY-margin #const global fieldLeft margin #const global fieldRight dispX-margin #module man speed,jumpPower,_width,_height,_x,_y,isAir,isHold,g,jPow #modcfunc manLeft return _x-_width/2 #modfunc manSetLeft int left _x=left+_width/2 return #modcfunc manRight return _x+_width/2 #modfunc manSetRight int right _x=right-_width/2 return #modcfunc manTop return _y-_height #modcfunc x return _x #modcfunc y return _y #define new(%1,%2,%3,%4,%5,%6,%7) dimtype %1,5:newmod %1,man,%2,%3,%4,%5,%6,%7 #modinit int __speed,int __jumpPower,int __width,int __height,int __x,int __y speed=__speed jumpPower=__jumpPower _width=__width _height=__height _x=__x _y=__y isAir=1 isHold=0 return #modfunc manMove dim keyPress getkey keyPress,keyLeft if keyPress: _x-=speed getkey keyPress,keyRight if keyPress: _x+=speed if manLeft(thismod)<=fieldLeft { manSetLeft thismod,fieldLeft } else:if fieldRight<=manRight(thismod) { manSetRight thismod,fieldRight } getkey keyPress,keyJump if isAir { if isHold { if keyPress { jPow– if jPow<0: jPow=0 _y-=jPow } else: isHold=0 } g++ _y+=g if fieldBottom<=_y { _y=fieldBottom-1 isAir=0 } } else:if keyPress { if 1!isHold { jPow=jumpPower _y-=jPow isHold=1 isAir=1 g=0 } } else: isHold=0 return #modfunc manView color 0,0,$99 boxf manLeft(thismod),manTop(thismod),manRight(thismod),_y return #global #module Program #defcfunc gKey int code dim refGet getkey refGet,code return refGet #deffunc main screen 0,dispX,dispY new@man bBox,6,22,32,32,dispX/2,dispY/2 repeat manMove bBox redraw 0 color $DD,$EE,$FF boxf color $33,$99,$FF boxf fieldRight boxf ,fieldBottom boxf ,,fieldLeft boxf ,,,fieldTop manView bBox color $FF,0,0 pos margin/2,margin/2 mes strf("x:%d y:%d",x(bBox),y(bBox)) redraw 1 wait 2 loop return #global main