sample\hspycp\02_基本2\sample02.hsp » Plain Format
#include "hspycp.as" // gosub *blockInit ycp_Open "HSPDSC_CaptureSource_Data", "HSPDSC_CaptureSource_Write", "HSPDSC_CaptureSource_Read" devId = stat fps = 30 avgTimePF = 1000 / fps // fps font "メイリオ", 64, 16 mref vram, 66 repeat // 描画したい内容 ;pos 0, 0 : color 255, 0, 0 ;boxf : color ;mes cnt gosub *blockDraw ycp_Send devId, cnt, fps, 640, 480, vram if stat < 0{ dialog "エラーが発生しました" break }else : if 0 == stat{ title "正常動作中" }else{ title "待機中..." } await avgTimePF loop ycp_Close devId stop *blockInit ; ; ブロック崩し(3) ; (ボール・バー・ブロック表示します) ; x1=0:y1=0 ; 画面左上の座標 x2=640:y2=480 ; 画面右下の座標 clrflag=0 ; クリアフラグ blsize=16 ; ボールのサイズ blspd=10 ; ボールのスピード blx=300:bly=240 ; ボールの座標 bpx=4:bpy=4 ; XY方向のボール座標加算値 bk=0 ; ブロックを崩すフラグ(1=崩す) mblsize=-blsize barsize=64 ; バーのサイズ barx=0:bary=440 ; バーの座標 barhalf=barsize/2 blhalf=blsize/2 wx=5:wy=100 ; ブロックの表示開始位置(左上) wsx=15:wsy=8 ; ブロックの配置数(X,Y) wpx=x2/wsx:wpy=16 ; ブロック1個あたりのサイズ dim wall,wsx,wsy ; ブロックを表示するフラグ ; 0=表示、1=表示しない return *blockStart return *blockDraw redraw 0 gradf 0,0,x2,y2,1,0,128 ; 画面クリア ; バー : マウス座標から位置を決定 barx=mousex-barsize/2 color 255,255,255 boxf barx,bary,barx+barsize,bary+16 ; ボール : X方向の移動 blx=blx+bpx if blx<=x1 : blx=x1 : bpx=-bpx if blx>=(x2-blsize) : blx=x2-blsize : bpx=-bpx ; ボール : Y方向の移動 bly=bly+bpy if bly<=y1 : bly=y1 : bpy=blspd : bk=1 : blspd=16 if bly>=(y2-blsize) : gosub *gameover ; ボールとバーがぶつかったかどうか調べます coly=bly+blsize if (coly>=bary)&(bly<(bary+16)) { ; ボールY座標のチェック ; ボールX座標のチェック colx=blx+blhalf x=barx+barhalf if abs(colx-x)<(barhalf+blhalf) { bly=bary-blsize : bpy=-blspd i=(colx-x)/4 if i!=0 : bpx=i bk=1 if clrflag { dim wall,wsx,wsy ; ブロックを復活させる clrflag=0 } } } ; ブロックの処理 colx=wpx+bsize coly=wpy+bsize left=0 repeat wsy cy=cnt y=cnt*wpy+wy hsvcolor cnt*10,255,255 repeat wsx cx=cnt x=cnt*wpx+wx if wall(cx,cy)=0 { ; ブロックを表示 left++ boxf x,y,x+wpx-2,y+wpy-2 i=blx-x:j=bly-y if (i>=mblsize)&(i<colx)&(j>=mblsize)&(j<coly)&(bk) { wall(cx,cy)=1 bpy=-bpy bk=0 } } loop loop ; ボールを表示 pos blx,bly:color 255,255,255 font msgothic,blsize mes "●" redraw 1 if left=0 : clrflag=1 return *gameover gosub *blockInit return