てっつやでミスタイプを確認するのがやっとの状況で
サークルでのサンプルをまかされているので早めにやっておきたいのです・・・
問題が無いと思う部分をカットしていますが、必要であれば全部記載します。
;2(押瞬間) 1(押) 0(無) -1(放瞬間) #module #undef getkey #deffunc getkey var p1,int p2 getkey@hsp key(122),p2 p1=key(122)*2-key(p2) key(p2)=key(122) return #global //各数値初期化// #const double mxhit 23 ;x自機の中心点 #const double myhit 29 ;y #const double armx 14 ;xアーム位置 #const double army 7 ;y #const double armwid 16 ;アーム幅 #const double mhitrad 12.5 ;円形当たり半径 #const double speed 2.0 #const double speedslan 1.0 #const double bullsp 7.0 ;弾丸初速 bullets=10 ddim shot ,bullets ddim shotx,bullets ddim shoty,bullets ddim shots,bullets mxs=double(0):mys=double(0) mx=double(winx/2-45) my=double(winy/2) testdisplay=1 ;デバッグ用 //◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆// //メインループ// *main redraw 0 gosub*getver gosub*player gosub*drow //gosub*getfps redraw 1:await 16 goto*main //□ □ □ □ □ □ □ □ □ □ □ □ // //変数更新// *getver getkey wkey,87 getkey skey,83 getkey akey,65 getkey dkey,68 getkey enter,13 if fade=1 or fadelv=0 :fadelv+=1 :fade=1 if fade=0 or fadelv=100 :fadelv-=1 :fade=0 return //プレイヤー// *player mxs=0:mys=0 if wkey=1 :mys=-speed if skey=1 :mys= speed if akey=1 :mxs=-speed if dkey=1 :mxs= speed if speed=absf(mxs)&speed=absf(mys) :mxs=mxs*speedslan:mys=mys*speedslan mx+=mxs:my+=mys ;射撃 if enter>0 :shottime++ :else:if shottime=0 foreach shot if shot(cnt)=0 & shottime\15=0 & enter>0{ shot(cnt)=1 shotx(cnt)=mx+armx shoty(cnt)=my+army shots(cnt)=-bullsp-(mys*-1) break} loop foreach shot if shot(cnt)=1 { shoty(cnt)+=shots(cnt) if shoty(cnt)<-10 :shot(cnt)=0 } loop ;壁衝突(矩形判定) if mx+mxhit-mhitrad<winx/windiv :mx=winx/windiv-mxhit+mhitrad if mx+mxhit+mhitrad>winx-winx/windiv:mx=winx-winx/windiv-mxhit-mhitrad if my+myhit-mhitrad<0 :my=0-myhit+mhitrad if my+myhit+mhitrad>winy:my=winy-myhit-mhitrad diskabe=absf(sqrt(pow((mx+mxhit)-winx/windiv,2)+pow((my+myhit),2))) return