HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0104
いむ (投稿者削除)4解決


いむ

リンク

2011/1/4(Tue) 15:54:19|NO.36525

この記事は投稿者により削除されました。
2011/1/13(Thu) 17:29:37



この記事に返信する


info

リンク

2011/1/4(Tue) 21:46:40|NO.36528

サブルーチンだけみせられても何とも言えませn



info

リンク

2011/1/5(Wed) 06:28:57|NO.36530

バグが残っていますが
少し面倒になってきたので、この辺で。


#include "user32.as" scx = 800 ;ウィンドウサイズx scy = 480 ;ウィンドウサイズy mysize = 32 ;自分の大きさ mysize buffer 1 screen 0,scx,scy gmode 2 ;定数の定義 jump=10 ;ジャンプ力 gr=2 ;重力(高いほど重力低い) fallmax=15 ;最高落下速度 speed=2 ;横移動のスピード ;変数の初期化 gcount=gr ;重力カウンター ox=x-mysize/2 ;自分位置x oy=0 ;自分位置y omx=0 ;左右移動量 omy=0 ;上下移動量 jimen=0 ;地面にいるか空中にいるか #const o %0000 #const g %0001 #const w %0010 #const s %0011 ;マップ読み込み dim MAP,16,16 ; 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 MAP(0,0) =o,o,o,o,o,o,o,o,o,o,o,o,o,o,w MAP(0,1) =o,o,o,o,o,o,o,o,o,o,o,o,o,o,w MAP(0,2) =o,o,o,o,o,o,o,o,o,o,o,o,o,o,w MAP(0,3) =o,o,o,o,o,o,o,o,o,o,o,o,o,o,w MAP(0,4) =o,s,g,g,g,g,s,o,o,o,o,o,o,o,w MAP(0,5) =o,o,o,o,o,o,o,g,s,o,o,o,o,o,w MAP(0,6) =o,o,o,o,o,o,o,o,o,o,o,o,o,o,w MAP(0,7) =o,o,o,o,o,o,o,o,o,o,o,s,s,o,g MAP(0,8) =o,o,o,o,o,o,o,o,o,o,o,w,o,o,w MAP(0,9) =o,o,o,o,o,o,o,o,s,o,o,o,o,o,w MAP(0,10)=o,o,o,o,o,o,o,o,w,o,o,o,o,o,w MAP(0,11)=o,o,o,o,o,s,o,o,w,o,o,s,o,o,w MAP(0,12)=o,o,o,o,o,w,o,o,o,o,o,w,o,o,w MAP(0,13)=o,o,o,o,o,w,o,o,o,o,o,w,o,o,w MAP(0,14)=g,g,g,g,g,g,g,g,g,g,g,g,g,g,g ; 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 *main redraw 0 gosub *DRAWMAP gosub *jibunsyori gosub *drawown redraw 1 await 1 goto *main *DRAWMAP color 0,0,0 :boxf 0,0,799,479 repeat 15 RCNT=cnt repeat 15 if MAP(cnt,RCNT)!0 { color 255,255,255 boxf cnt*32,RCNT*32 , cnt*32+32 -1 ,RCNT*32+32 -1 } loop loop return *jibunsyori stick KY,5,1 if KY and 1 : omx=-speed : if KY and 4 : omx=speed : if KY and 16 { if jimen :omy=-jump:jimen = 0 } gcount-- if jimen : gcount=0 : omy = 0 if gcount=0 { omy = limit(omy+1,-jump,fallmax) gcount=gr } stokox = ox ox+=omx oy+=omy opx0=(ox)/32: opy0=(oy)/32 opx1=(ox+31)/32: opy1=(oy+31)/32 jimen = ( (MAP(opx0,opy1)&g) or (MAP(opx1,opy1)&g) ) kabe = ( (MAP(opx0,opy0)&w) or (MAP(opx1,opy0)&w)) kabe2 = ( (MAP(opx0,opy1)&w) or (MAP(opx1,opy1)&w) ) tenjyou = ( (kabe!0) and (omy<=-1)) if tenjyou : oy=(opy0+1)*32 : omy = 0 if kabe : ox=stokox if (jimen) { if kabe2 { if (oy\32)!2 : ox = stokox : if (ox\32) or (opx0=opx1) : oy=opy0*32+1 }else{ oy=opy0*32+1 } } omx=0 ox=limit(ox,0,scx) title strf("地面 %d : 壁 %d,%d : 天井 %d : 現在位置 %d,%d : 移動予定 %d,%d",jimen,kabe,kabe2,tenjyou,opx0,opy0,opx1,opy1) return *drawown color 255 // boxf ox,oy,ox+32-1,oy+32-1 if jimen { boxf ox,oy-1,ox+32-1,oy+32-2 }else{ boxf ox,oy,ox+32-1,oy+32-1 } return



k

リンク

2011/1/5(Wed) 14:01:53|NO.36533

ループ内で判定をX移動後とY移動後2回しています。

変数名が適当なので醜いです。(^^;



dim map,10,10 map(0,0)=1,1,1,1,1,1,1,1,1,1 map(0,1)=1,0,0,0,0,0,0,0,0,1 map(0,2)=1,0,0,0,0,0,0,0,0,1 map(0,3)=1,0,0,0,0,1,0,0,0,1 map(0,4)=1,0,0,0,0,1,1,0,0,1 map(0,5)=1,0,0,0,0,0,0,0,0,1 map(0,6)=1,0,0,0,0,0,0,1,0,1 map(0,7)=1,1,0,0,0,0,1,0,1,1 map(0,8)=1,0,1,0,0,1,0,0,0,1 map(0,9)=1,1,1,1,1,1,1,1,1,1 color 0,0,0 boxf x=100:y=100:size=30:bsize=40: repeat ax=0 stick sk,5 if sk&4 : ax=4 if sk&1 : ax=-4 if sk&16 : if skf=0 : ay=-14 : skf=1 ay++ y+=ay gosub *hantei if aa>0 { if ay>=0 { y=bby*bsize-size-1:ay=0:skf=0} else {y=aay*bsize+bsize:ay=0} } x+=ax gosub *hantei if aa>0 { if ax>=0 { x=bbx*bsize-size-1} else {x=aax*bsize+bsize} } redraw 0 color 0,0,0 boxf color 255,255,255 repeat 10 yy=cnt repeat 10 xx=cnt if map(xx,yy)=1 : boxf xx*bsize,yy*bsize,xx*bsize+bsize-2,yy*bsize+bsize-2 loop loop color 255,0,0 boxf x,y,x+size,y+size redraw 1 await 17 loop *hantei aax=x/bsize bbx=(x+size)/bsize aay=y/bsize bby=(y+size)/bsize aa=map(aax,aay)+map(bbx,aay)+map(aax,bby)+map(bbx,bby) return



いむ

リンク

2011/1/9(Sun) 17:39:55|NO.36584

大変遅れてしまいましたがinfoさんにkさんありがとうございます!



ONION software Copyright 1997-2023(c) All rights reserved.