プチコン3号で反時計回りの線分でぐるりと一周囲まれた内部をループで塗りつぶしたいです。
何故ならば、いちいち一つの頂点枚に計算していたら冗長すぎて面倒です。
そこで配列とループで出来ないかどうか知りたいです。
以下のプログラムをループで求めたいです。
これを何に使いたいかというと応用としてレーシングゲームでコースアウトしたかどうかを
知りたいのです。
以下実行結果です。
リンク内容
DIM LINEX[4]:DIM LINEY[4]'LINE ノ X ト Y
ADD=80 'ホセイチ
LINEX[0]=50/2+ADD:LINEY[0]=20/2+ADD
LINEX[1]=10/2+ADD:LINEY[1]=200/2+ADD
LINEX[2]=380/2+ADD:LINEY[2]=230/2+ADD
LINEX[3]=320/2+ADD:LINEY[3]=30/2+ADD
DIM S[4]
GCLS 'ガメンヲショウキョ
MINX=MIN(LINEX):MINY=MIN(LINEY) 'サイショウチノ X ト Y
MAXX=MAX(LINEX):MAXY=MAX(LINEY) 'サイダイチノ X ト Y
FOR Y2=MINY TO MAXY
FOR X2=MINX TO MAXX
TX=X2:TY=Y2
GOSUB @L
IF ANS1<0 && ANS2<0 && ANS3<0 && ANS4<0 THEN GPSET X2,Y2
'ANS1トANS2トANS3トANS4ガ0ヨリシタナラGPSETデ テン ヲ エガク
NEXT
NEXT
END
@L 'ココカラ シタヲ ループデ モトメタイ
VX1=(LINEX[1]-LINEX[0])
VY1=(LINEY[1]-LINEY[0])
VX2=TX-LINEX[0]
VY2=TY-LINEY[0]
ANS1=VX1VY2-VY1VX2
VX1=(LINEX[2]-LINEX[1])
VY1=(LINEY[2]-LINEY[1])
VX2=TX-LINEX[1]
VY2=TY-LINEY[1]
ANS2=VX1VY2-VY1VX2
VX1=(LINEX[3]-LINEX[2])
VY1=(LINEY[3]-LINEY[2])
VX2=TX-LINEX[2]
VY2=TY-LINEY[2]
ANS3=VX1VY2-VY1VX2
VX1=(LINEX[0]-LINEX[3])
VY1=(LINEY[0]-LINEY[3])
VX2=TX-LINEX[3]
VY2=TY-LINEY[3]
ANS4=VX1VY2-VY1VX2
GLINE LINEX[0],LINEY[0],LINEX[1],LINEY[1]
GLINE LINEX[1],LINEY[1],LINEX[2],LINEY[2]
GLINE LINEX[2],LINEY[2],LINEX[3],LINEY[3]
GLINE LINEX[3],LINEY[3],LINEX[0],LINEY[0]
RETURN
回答2件
あなたの回答
tips
プレビュー