• 締切済み

99BASICで五目並べを作りたいのですが…

サブルーチン*CHECK_TABLEは、味方の色(COL:0が黒、1が白)の数を 上から、右上、右、右下、下、左下、左、左上の8つの方向を順番に 数えるプログラムなのですが、上手く動作しません。 出来かけのソースを載せますので、誰か、助けてください。 100 '最初のプログラム(2009/03/18-05:44:23) 110 DIM MASU(640/32,480/32):CLC_X=23*32:CLC_Y=20*32:JUNBN=1 120 DIM CHKTBL_X(7):DIM CHKTBL_Y(7):DIM C(7) 130 CHKTBL_X(0)=0:CHKTBL_Y(0)=-1 140 CHKTBL_X(1)=1:CHKTBL_Y(1)=-1 150 CHKTBL_X(2)=1:CHKTBL_Y(2)=0 160 CHKTBL_X(3)=1:CHKTBL_Y(3)=1 170 CHKTBL_X(4)=0:CHKTBL_Y(4)=1 180 CHKTBL_X(5)=-1:CHKTBL_Y(5)=1 190 CHKTBL_X(6)=-1:CHKTBL_Y(6)=0 200 CHKTBL_X(7)=-1:CHKTBL_Y(7)=-1 210 PALETTE 8,(150,0,0) 220 *MAIN_LOOP'メインループ-------------------------------------------------- 230 CLS 3:SCREEN 3,5,0 240 GOSUB *DRAW_TABLE 250 GOSUB *GET_CLICK 260 SCREEN 3,1,0 270 GOTO *MAIN_LOOP '-------------------------------------------------------- 280 *DRAW_TABLE 290 LINE(0,0)-(640,480),8,BF '背景色を塗る 300 FOR I=0 TO 640/32 310 FOR J=0 TO 480/32 320 LINE(I*32,J*32)-(I*32+32,J*32+32),7,B '升目を描く 330 CX=I:CY=J 340 IF MASU(CX,CY)=1 THEN CIRCLE(I*32+16,J*32+16),16,0:PAINT(I*32+16,J*32+16),0 350 IF MASU(CX,CY)=2 THEN CIRCLE(I*32+16,J*32+16),16,7:PAINT(I*32+16,J*32+16),7 360 NEXT J'マスの値に応じて円の色を変える 370 NEXT I 380 RETURN 390 *GET_CLICK '------------------------------------------------------------- 400 'GET MOUSE 0,SW,MOUSE_X,MOUSE_Y 410 GET MOUSE 2,SW,CLC_X,CLC_Y 'クリックした座標を取得 420 IF CLC_X<>0 AND CLC_Y<>0 THEN CX=CLC_X\32:CY=CLC_Y\32 '32で割る 430 IF MASU(CX,CY)=0 AND FLAG=1 THEN MASU(CX,CY)=JUNBN+1 '順番通りにマスを反映させる 440 NUM1=CX:NUM2=CY:COL=JUNBN+1 450 GOSUB *CHECK_TABLE 460 FOR I=0 TO 7 480 IF C(I)>4 THEN WINCOLOR=JUNBN+1:GOSUB *WIN 485 PRINT "C(";I;")=";C(I) 490 NEXT I 500 MOUSE ON,2:ON MOUSE GOSUB *CHANGE_JUNBN 510 RETURN 520 *CHANGE_JUNBN 530 JUNBN=JUNBN XOR 1:FLAG=1 '順番を反転させる 540 RETURN 550 *CHECK_TABLE '----------------------------------------------------------- 560 FCOL=COL '味方の色 570 FOR I=0 TO 7 580 CHECK_X=NUM1:CHECK_Y=NUM2:COUNT=0 '指定の座標からチェックする 590 FOR J=0 TO 100 600 IF CHECK_X<0 OR CHECK_X>640/32 THEN GOTO *BK 610 IF CHECK_Y<0 OR CHECK_Y>480/32 THEN GOTO *BK 620 IF COUNT>0 AND MASU(CHECK_X,CHECK_Y)<>FCOL THEN GOTO *BK 630 IF COUNT>0 AND MASU(CHECK_X,CHECK_Y)=FCOL THEN C(I)=C(I)+1 640 CHECK_X=CHECK_X+CHKTBL_X(I):CHECK_Y=CHECK_Y+CHKTBL_Y(I) 650 COUNT=COUNT+1 660 NEXT J 670 *BK 680 NEXT I 690 RETURN 700 *WIN '------------------------------------------------------------------- 710 IF WINCOLOR=1 THEN PRINT"黒が勝ちました。!" ELSE PRINT"白が勝ちました。!" 720 RETURN

  • TKOZ
  • お礼率38% (8/21)

みんなの回答

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

ざっとプログラムを眺めただけですが、気になる点がありました。 ・*CHECK_TABLE でチェックする前に、C(I)の初期設定(1を代入?)をしていないのでは? ・たとえば白を置いた(クリックした)とき、上に4個白が並んでいる場合はOKですが、上に2個、下に2個白が並んでいる場合は勝ちと判断できないのでは? もし違っていたらすみません。

TKOZ
質問者

お礼

nag0720さん、返事が遅れてすみません。 アドバイスありがとうございます。 上記のアドバイスを基に作り直してみます。

関連するQ&A

  • グラフを書きたいのですがどのようにして使うかわかりません

    FOR I=-200 to 200 FOR J=-200 to 200 X(0) = I / 100 ; Y(0) = J / 100 FOR N=0 to 1000 X(N+1) = X(N)^2 - Y(N)^2 + X(0) Y(N+1) = 2*X(N)*Y(N)+Y(0) IF X(N)^2 + Y(N)^2 > 4 THEN PSET(I,J) WHITE ELSE IF N = 1000 THEN PSET(I,J) BLUE ELSE NEXT N END IF NEXT J; NEXT I というグラフを書くプログラムがあるのですがこのプログラムの使い方がわからなくて使えないのでどのようにすれば見れるのか教えてください。

  • パックマンゲーム 敵の動きについて c言語

    現在 簡単なパックマンゲームを作成しています。 以下のプログラムだと、 ・敵が壁にあたると全く動かなくなる という問題点があります。なので、例えば、「動ける(壁でない)方向のうち、移動後の距離が一番自機に近い方向に移動する」というアルゴリズムにしようと思ったのですが、全くコードが思い浮かべません。 どんなコードをかけばいいでしょうか。 できればコードを具体的に教えていただきたいです。 お願いいたします。 #pragma warning(disable:4996) #include <stdio.h> #include <stdlib.h> // system() #include <windows.h> // Sleep() #include <conio.h> // kbhit() #define SIZE 15 // 一辺の長さ #define EMPTY 0 // 何もない場所は0 #define WALL 1 // 壁 #define FOOD 2 // えさ(ドット) #define POWER_FOOD 4 //パワーエサ #define PACMAN 3// 主人公 #define SIZE 15 // 一辺の長さ #define EMPTY 0 // 何もない場所は0 #define WALL 1  // 壁 #define FOOD 2  // えさ(ドット) #define PACMAN 3// 主人公   int main() {     int wait_time = 300;     int x, y;     int food_count = 0;//エサの個数     int cx, cy;//パックマン     int ex, ey;//敵     int key;     int point = 0;     int kx, ky;//自機の座標を保存     int mx, my;//敵機の座標を保存     int life = 3;     // 壁 1、えさ 2、空白 0     // field[y][x]となる     int field[SIZE][SIZE] =     {         { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },       ・・・・・・・・・         { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },     };               cx = 7, cy = 7; //パックマンの初期位置     ex = 1, ey = 1;//敵の初期位置     //エサの個数を数える     for (y = 0; y < SIZE; y++)     {         for (x = 0; x < SIZE; x++)         {             if (field[y][x] == FOOD)                 food_count++;         }       }       while (1)     {         // まずはPACMANの動き           if (kbhit())         {             key = getch();//             kx = cx, ky = cy;//自機の座標を保存する             switch (key)             {             case '4':                 cx--;                 break;             case '6':                 cx++;                 break;             case '2':                 cy++;                 break;             case '8':                 cy--;                 break;             }               cx = (cx + SIZE) % SIZE; //ワープ                        switch (field[cy][cx])             {             case WALL://壁                 cx = kx, cy = ky; //動けないので cx, cy を元に戻す                                                   break;             case FOOD:                 field[cy][cx] = 0;//餌を食べると餌が消える                 point += 10;      //得点加算                 food_count--;     //餌の数を減らしていく                 break;             }             if (cx == ex && cy == ey)                 life--;         } // 敵機の動き         mx = ex; my = ey;//敵機の座標を保存する           if (ex > cx)             ex--;         else if (ex < cx)             ex++;         else if (ey > cy)             ey--;         else if (ey < cy)             ey++;                 if (field[ey][ex] == WALL)  //もし敵機が壁に当たったらもとの座標に戻す。         {             ex = mx; ey = my;         }         ex = (ex + SIZE) % SIZE; //ワープ           if (cx == ex && cy == ey) {             life--;             ex = 7, ey = 7;             Sleep(wait_time);         } //画面表示 for (y = 0; y < SIZE; y++) {             for (x = 0; x < SIZE; x++) {                 if (x == cx && y == cy)                     printf("C ");                 else if (x == ex && y == ey)                     printf("◇");                 else if (field[y][x] == FOOD)                     printf(". ");                 else if (field[y][x] == WALL)                     printf("■");                 else                     printf(" ");             }             printf("\n");         }         printf("\n");         printf(" (cx,cy) = (%d, %d)\n", cx, cy);         printf(" point: %d\n", point);         printf("  LIFE: %d\n", life);           if (life == 0)         {             printf("game over\n");                       Sleep(wait_time);             break;         }           if (food_count == 0)             {             printf("game crer\n");             Sleep(wait_time);             break;           }         Sleep(wait_time);//

  • 十進BASICのプログラムについて

    十進BASICのプログラムについて 小町算のプログラムですが、 100 DIM s(9) 110 FOR i=1 TO 9 120 LET s(i)=-1 130 NEXT i 140 DO 150 LET sum=0 160 LET num=0 170 LET sign=1 180 FOR i=1 TO 9 190 IF s(i)<>0 THEN 200 LET sum=sum+sign*num 210 LET sign=s(i) 220 LET num=i 230 ELSE 240 LET num=10*num+i 250 END IF 260 NEXT i 270 LET sum=sum+sign*num 280 IF sum=100 THEN 290 FOR i=1 TO 9 300 IF s(i)= +1 THEN PRINT " + "; 310 IF s(i)= -1 THEN PRINT " - "; 320 PRINT i; 330 NEXT i 340 PRINT " = 100" 350 END IF 360 LET i=9 370 LET sign=s(i)+1 380 DO WHILE ( sign > 1 ) 390 LET s(i)=-1 400 LET i=i-1 410 LET sign=s(i)+1 420 LOOP 430 LET s(i)=sign 440 LOOP WHILE ( s(1) < 1) 450 END というものですが、このプログラム中にあるsum、num、signとはどういう意味があるのでしょうか?

  • VBで円を書いたとき、同じにならないのですが。どうしてでしょう?

    VBで、円を描いたとき Circle (CX, CY), 450 で、描いた円と Pi = 3.14159265 For i = 1 To 120 dd = i * 3 x = Cos((90 - dd) * Pi / 180) y = -Sin((90 - dd) * Pi / 180) HX = CX + x * 450 HY = CY + y * 450 PSet (HX, HY) Next i で、描いた円が、重ならないのですが、何故でしょうか? Circle で、描いた円の方が縦が、少し短いような感じになります。

  • 十進BASICでの衝突プログラミング

    十進ベーシック超初心者です。二次元の箱の中に円を置き、そこで衝突を繰り返すプログラムをつくりたいのですが行き詰っています。 箱の中だけでの衝突は、以下のようにプログラムできたのですが、円にぶつかるときどのようにプログラムをくんで跳ね返させればいいかわかりません。どなたか教えて下さい。 SET WINDOW -20,20,-20,20 DRAW GRID(2,2) PLOT LINES: -10,-10 ;10,-10;10,10;-10,10;-10,-10 DRAW CIRCLE WITH SCALE (2) LET X=-10 LET Y=-10 LET T=0 LET V=4.53574748 LET A=56.654968 LET VX=COS(A) LET VY=SIN(A) 100 PLOT LINES:X,Y ; IF VX>0 THEN LET LX=20-(10+X) END IF IF VX<0 THEN LET LX=20-(10-X) END IF IF VY>0 THEN LET LY=20-(10+Y) END IF IF VY<0 THEN LET LY=20-(10-Y) END IF LET T=MIN(LX/ABS(VX),LY/ABS(VY)) LET X=VX*T+X LET Y=VY*T+Y IF T=LX/ABS(VX) THEN LET VX=-VX END IF IF T=LY/ABS(VY) THEN LET VY=-VY END IF GOTO 100 END

  • 3点を通る放物線の求め方を教えてください。

    3点を通る放物線の求め方を教えてください。 (x1,y1), (x2,y2), (x3,y3)をこの順番で通り、頂点を(x2,y2)とする放物線を考えます。 3点が直線上になければ、ただ一つの放物線が定まると思います。 x=x2 を対称軸と仮定すれば、 a(x-x2)^2+y-y2=0 が放物線の式になります。 回転を考慮し、c^2+s^2=1 の変数を加えて書きなおせば、 a(cx-sy-cx2+sy2)^2+sx+cy-sx2-cy2=0 となりますが、X=x-x2, Y=y-y2 と置けば、 a(cX-sY)^2+sX+cY=0 となります。 この先、x1, y1 などを代入し、連立方程式にして解けば…と思いましたが上手くいきませんでした。

  • N88 basicプログラムの質問(ノルム計算)1

    N88 basicプログラムにおいて鉱物のノルム計算ができるようにしたいのですが、プログラムを打ち込んだのですが、うまく動きません。どなたかわかる方がいればご教授頂きたく願います。 かなり長くなりますが、ぜひともお願い致します。 下記、打ち込んだプログラムとなります。 長いので、質問を分けて入力します。 10 ' 20 '***** normative calculation program for clay minerals ***** by T,Igarashi,1983 30 ' 40 OPTION BASE 1 50 CONSOLE 0,25,0,1 60 WIDTH 40,25 70 ' 80 ' 90 DIM A$(22),DMY$(22),AA$(22),B1$(31),M$(8),L$(8) 100 DIM A(8,22),A1(22),A2(22),B(31),B0(8,31),C9(31),TOTAL(2,8) 110 GOSUB *INIT.1 120 ON ERROR GOTO 5000 130 GOSUB *ENTER 140 FOR QQ=1 TO NN 150 GOSUB *INIT.2 160 IF KORF=1 THEN GOSUB *FILE ELSE GOSUB *KEYBOARD 170 GOSUB *STORE 180 GOSUB *CALC 190 GOSUB *OUTPUT 200 NEXT QQ 210 GOSUB *PRINTOUT 220 GOTO 130 230 ' 240 ' 250 ' 260 *INIT.1 270 RESTORE 290 280 FOR I=1 TO 22 : READ AA$(I) : READ A2(I) : NEXT 290 DATA SIO2,60.085,TiO2,79.899,Al2O3,101.961,Fe2O3,159.692,FeO,71.846,MnO,70.937,MgO,40.304,CaO,56.079,Na2O,61.979,K2O,94.195 300 DATA P2O5,141.943,Cl,35.453,SO3,80.57,S,32.6,Cr2O3,151.989,ZrO2,123.218,F,18.99,CO2,44.9,H2O+,18,H2O-,1,Ig.LOSS,1,Others,1 310 RESTORE 330 320 FOR I=1 TO 31 : READ B1$(I) : NEXT 330 DATA Q,C,ad,mi,ab,an,ka,se,ch,gi,mo,pp,dp,al,Z,hl,th,cc,mg,sd,li,mt,he,cm,pr,il,ru,ap,fr,en,ot 340 C9(1)=A2(1) : C9(2)=A2(3) : C9(3)=A2(1)+A2(3) : C9(4)=A2(10)+A2(3)+A2(1)*6 : C9(5)=A2(9)+A2(3)+A2(1)*6 : C9(6)=A2(8)+A2(3)+A2(1)*2 : C9(7)=A2(3)+A2(1)*2+A2(19)*2 350 C9(8)=A2(10)+A2(3)*3+A2(1)*6+A2(19)*2 : C9(9)=A2(7)*5+A2(3)+A2(1)*3+A2(19)*4 : C9(10)=A2(3)+A2(19)*3 : C9(11)=A2(9)*33+A2(3)+A2(7)+A2(1)*4+A2(19)*4 : C9(12)=A2(3)+A2(1)*4+A2(19) 360 C9(13)=A2(3)+A2(19) : C9(14)=A2(10)+A2(3)*3+A2(13)*4+A2(19)*6 : C9(15)=A2(1)+A2(16) : C9(16)=(A2(9)-16)/2+A2(12) : C9(17)=A2(9)+A2(13) : C9(18)=A2(8)+A2(18) : C9(19)=A2(7)+A2(18) : C9(20)=A2(5)+A2(18) 370 C9(21)=A2(4)+A2(19) : C9(22)=A2(4)+A2(5) : C9(23)=A2(4) : C9(24)=A2(5)+A2(15) : C9(25)=A2(5)-16+A2(14)*2 : C9(26)=A2(2)+A2(5) : C9(27)=A2(2) : C9(28)=A2(8)*10+A2(11)*3+A2(19) 380 C9(29)=A2(8)-A2(17)*2 : C9(30)=A2(1)+A2(7) : C9(31)=1 : DD=0 390 FOR I=1 TO 31 : B(I)=0 : NEXT 400 RETURN 410 ' 420 ' 430 ' 440 *ENTER 450 C=0 : KORF=0 : SCREEN 3,3 : CLS 3 : SCREEN 3,0 : LINE(0,0)-(639,199),6,BF : COLOR 2 460 LOCATE 0,5 : PRINT "How many samples (Max 8 samples)";: INPUT NN 470 IF NN>8 THEN CLS 1 : GOTO 460 480 IF NN=0 THEN GOTO *PROEND 490 COLOR 2 : LOCATE 0,8 : PRINT "Input data from Keyboard or File or End : K/F/E" 500 Y$=INKEY$ 510 IF Y$="" THEN 490 520 IF Y$="e" OR Y$="E" THEN GOTO *PROEND 530 IF Y$="k" OR Y$="K" THEN KORF=0 : RETURN 540 IF Y$<>"f" AND Y$<>"F" THEN 490 550 KORF=1 560 RETURN 570 ' 580 ' 590 ' 600 *INIT.2 610 CLS 1 620 FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I 630 FOR I=1 TO 31 : B(I)=0 : B0(QQ,I)=0 : NEXT I 640 RETURN 650 ' 660 ' 670 ' 680 *FILE 690 OPEN "data.1" AS #1 700 FIELD #1,40 AS MINERAL$,40 AS L1$ 710 FOR I=1 TO 22 : FIELD #1,(I-1)*4+80 AS DMY$(I),4 AS A$(I) : NEXT 720 MAX=LOF(1) : IF MAX=0 THEN RETURN 440 730 LOCATE 1,2 : PRINT MAX;"records are filing." 740 IF DD=1 THEN 800 750 LOCATE 2,5 : PRINT "You need list (Y/N)?": Y$=INKEY$ 760 IF Y$"" THEN 750 770 IF Y$="N" OR Y$="n" OR Y$="ミ" THEN 800 780 IF Y$="Y" OR Y$="y" OR Y$="ン" THEN GOSUB *NAME.LIST : GOTO 800 790 GOTO 750 800 LOCATE 2,10 : INPUT "Record No.";N 810 IF N>MAX THEN CLS 1 : GOTO 730 820 GET #1,N 830 M$=MINERAL$ : L$=L1$ 840 FOR I=1 TO 11 : A(QQ,I)=CVS(A$(I)) : A(QQ,I+11)=CVS(A$(I+11)) : NEXT 850 CLOSE #1 : DD=1 860 LOCATE 2,15 : PRINT "Correct data : Y/N"; : Y$=INKEY$ 870 IF Y$="" THEN 860 880 IF Y$="Y" OR Y$="y" THEN C=1 : GOTO 1120 890 IF Y$="N" OR Y$="n" THEN RETURN 180 900 GOTO 860 910 ' 920 ' 930 ' 940 *NAME.LIST 950 LPRINT 960 LPRINT CHR$(27) ; "V0960" ;CHR$(&H8) 970 LPRINT "Sample Name" ; TAB(40); "Locality" 980 LPRINT CHR$(27);"V0960";CHR$(&H8) 990 FOR II=1 TO MAX 1000 GET #1, II 1010 M$=MINERAL$ : L$=L1$ 1020 LPRINT M$; TAB(40); L$ 1030 NEXT 1040 LPRINT CHR$(27) ; "V0960";CHR$(&H8) 1050 LPRINT CHR$(12) 1060 RETURN 1070 ' 1080 ' 1090 ' 1100 *KEYBOARD 1110 M$="" : L$="" : FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I

  • このプログラムを実行すると座標列になるのですが、どうして実行結果のよう

    このプログラムを実行すると座標列になるのですが、どうして実行結果のような座標列になるのかがよくわかりません。 僕はdraw_polygon()中のif(r>xxx)の部分に何かあるような気がします。単なる推測ですが・・・。 理由を教えていただけませんか? #define _CRT_SECURE_NO_DEPRECATE 1 #include <stdio.h> #include <math.h> #defi ne PI 3.14159265358979323846 FILE *fp;//グローバル変数.あまり使うな! double get_x(double r, double angle); double get_y(double r, double angle); void draw_polygon(int n, double r, double cx, double cy); void main(void) { fp=fopen("polygon.csv","w");//チェック省略 draw_polygon(4,1,0,0); fclose(fp); } double get_x(double r, double angle) { return(r*cos(angle)); } double get_y(double r, double angle) { return(r*sin(angle)); } void draw_polygon(int n, double r, double cx, double cy) { int i; double delta,angle,x,y; delta=2.0*PI/n; for(i=0; i<=n; i++)//i<=n { angle=delta*i; x=get_x(r,angle)+cx; y=get_y(r,angle)+cy; fprintf(fp,"%8.3f,%8.3f\n",x,y); } fprintf(fp,"\n"); if(r>0.05) { for(i=0; i<=n; i++)//i<=n { angle=delta*i; x=get_x(r,angle)+cx; y=get_y(r,angle)+cy; draw_polygon(n,r*0.5,x,y); } } } プログラムを見やすく作ったのですが、この質問を掲示した途端に上下そろってしまいました(汗) 見にくくなってしまいすみません。

  • CORDICによるSIN/COSの計算

    題目のアルゴリズムの計算をプログラムしましたが、期待値と 計算値が合いません。 誤りを指摘してください。 REM calculation of sin and cos by CORDIC k = 1 / .60725 z = .65 GOSUB 1000 PRINT "cos(z)="; x PRINT "sin(z)="; y END 1000 REM sin(z) , cos(z) x = 1 / k y = 0 i = 0 1010 IF z >= 0 THEN 1200 u = x + y * 2 ^ (-i) y = y - x * 2 ^ (-i) z = z + atan(2 ^ (-i)) x = u GOTO 1400 1200 u = x - y * 2 ^ (-i) y = y + x * 2 ^ (-i) z = z - atan(2 ^ (-i)) x = u 1400 i = i + 1 IF i < n THEN 1010 RETURN アルゴリズムの出展は ディジタル信号による通信システム設計 P138 図3-36 CQ出版社

  • Basicのプログラミングについて… (game)

    箱の上から自然に落ちるようにするにはどうすればよいのでしょうか? SET bitmap SIZE 500,500 SET WINDOW 0,10000,10000,0 LET x=5000 LET y=5000 LET jsw=0 DO UNTIL getkeystate(13)<0 PLOT LINES:0,5000+110;10000,5000+110 PLOT LINES:6000,4000;7000,4000 PLOT LINES:6000,4000;6000,5000+110 PLOT LINES:7000,4000;7000,5000+110 SET AREA COLOR "white" DRAW disk WITH SCALE(100)*SHIFT(x,y) IF getkeystate(37)<0 THEN LET x=x-50 IF getkeystate(39)<0 THEN LET x=x+50 IF x<0 THEN LET x=0 IF x>10000 THEN LET x=10000 IF getkeystate(38)<0 AND jsw=0 THEN LET jsw=1 LET i=-SQR(2500) END IF IF jsw=1 THEN LET y=i^2+2500 LET i=i+1 IF i>SQR(2500) THEN LET jsw=0 end if if i>0 then if 6000<x and x<7000 then if 4000-140<=y THEN LET jsw=0 end if end if end if if i>0 then if 6000>x then LET y=i^2+2400 IF i>SQR(2500) THEN LET jsw=0 end if end if SET AREA COLOR "black" DRAW disk WITH SCALE(100)*SHIFT(x,y) WAIT DELAY 0.01 LOOP END

専門家に質問してみよう