by konisi » 2005年10月14日(金) 04:26
僕も独学でBASIC言語(古い本があったので読み漁りましたがおそらくN88系かと。)を覚えました。
確か一番最初に作ったオリジナルプログラムの内容は「キーボードを叩いた回数をカウントして、指定回数以上になったらプログラムを終了させる」だったかなぁ。何百行(実際には30行ほど。)と書いたのを今でも覚えてます。
因みにそのプログラムはまだ動かしていません。要するに小さなノートにチマチマと書いておいてほうったらかしっていう話になるんですが、色々知識が身に付いた後で見直したけどバグもエラーになりそうなところも特にありませんでしたねぇ。
あのノート、どこに行ったかなぁ・・・。
それでパソコンで実際に作り始めたのは中2の春からかなぁ。最初に動かしたプログラムの内容は忘れましたが、自分が作ったプログラムで現存する中で最古のプログラムのコードはまだあるので載せます。
N88系BASIC用(元code)
コード: 全て選択
40 '初期設定
50 CLS 3
60 COLOR 0,7,0,7,1
70 CLS 3
80 ON ERROR GOTO *ERROR1
90 LOCATE 0,0
100 PRINT "このプログラムはフリーです。"
103 FOR I=1 TO 2000 '表示時間 約1秒
106 NEXT I
109 CLS 3
110 PRINT "どのゲームで遊びますか?"
120 PRINT "ルーレット=1,数当て=2,"
140 INPUT "どれ";N
150 if N=1 then goto 240
160 if N=2 then goto 520
170 if N=3 then goto 240 else goto 140
190 *END SUB
191 CLS 3
200 END
210 *ERROR1
220 LINE (0,0)-(530,300),7,BF
223 COLOR 2
225 PRINT "エラーが起きました。"
230 goto 100
240 CLS 3'ルーレット メイン プログラム
241 gosub 411
242 C=D
264 gosub 390
265 LOCATE 0,2
267 PRINT "ルーレットを開始します。"
269 LOCATE 0,3
270 INPUT "倍率を入れてください。";B
275 if B<=1 then goto 370
276 LOCATE 0,4
277 PRINT "現在"
278 gosub 470
279 LOCATE 0,5
280 INPUT "掛け金を入れてください。";K
285 if K<=0 then goto 279
286 if K>C then goto 279
290 A=FIX(RND*B)+1
294 LOCATE 0,7
295 INPUT "数を予想してください。";X
296 if X>B then goto 297 else goto 300
297 PRINT "倍率以下で1以上の数にして下さい。"
298 goto 295
300 if A=X then goto 450
301 if A<>X then goto 460
303 if C=0 then goto 360
350 goto 264
360 PRINT "ゲームオーバー...読み込み中..."
361 FOR I=1 TO 6000 '表示時間 約3秒
362 NEXT I
363 goto 50
369 'ルーレット サブ プログラム
370 CLS 3
380 goto 265
390 COLOR 1,6,1,6,1
400 CLS 3
410 RETURN
411 D=1000 '最初の所持金
449 RETURN
450 C=C-K+(B*K)
455 goto 303
460 C=C-K
465 goto 303
470 LOCATE 4,4
480 PRINT ;C
490 LOCATE 11,4
500 PRINT "コイン有ります"
510 RETURN
520 CLS 3 '数当て メインプログラム
530 CONSOLE 0,25,0,1
540 CLS 3
555 gosub 660
550 PRINT "数当てを開始します。"
560 INPUT "1からどのくらいまでの数にしますか";B
565 goto 750
570 PRINT "コンピュータが作った数を当ててください。"
580 PRINT "間違ってれば、もっと多いかもっと少ないかをいいます。"
590 C=INT(RND*B)+1
600 N=1
610 INPUT "数は何でしょうか";K
615 if K<1 then goto 770
620 if C=K then goto 690
630 goto 800
650 '数当て サブ プログラム
660 COLOR 2,5,2,5,1
670 CLS 3
680 RETURN
690 PRINT " - - "
700 PRINT " @ @ "
710 PRINT " O "
730 if N<5 then PRINT "大当たり~" else PRINT "当たり"
731 PRINT "スコア";N;"手"
735 INPUT "まだやりますか?(Y/N)";X$
736 if X$="Y" then goto 520
737 if X$="N" then goto 900
738 if X$="y" then goto 520
739 if X$="n" then goto 900
741 goto 735
750 if INT(B)=B then 570 else goto 760
760 if B=1 then goto 780
770 PRINT "正の整数を入れてください。"
777 goto 560
780 PRINT "正の整数で、1以外の数値を入れてください。"
790 goto 560
800 PRINT " / \"
810 PRINT " @ @ "
820 PRINT " "
830 PRINT " ^ "
840 if C<K then goto 850 else 880
850 PRINT "もっと少ない"
860 N=N+1
870 goto 610
880 PRINT "もっと多い"
888 N=N+1
890 goto 610
900 PRINT "...読み込み中..."
910 FOR I=1 TO 6000
920 NEXT I
930 goto 50
940 '
ちょっとコードを変更してActiveBasicに対応させたコード↓
コード: 全て選択
#N88BASIC
Dim I,N,A,B,C,D,X$ As String,X,K
40 '初期設定
50 Cls 3
60 Color 0,7
70 Cls 3
Paint (0,0),7,7
90 Locate 0,0
100 Print "このプログラムはフリーです。"
103 Sleep(1000)
109 Cls 3
Paint (0,0),7,7
110 Print "どのゲームで遊びますか?"
120 Print "ルーレット=1,数当て=2,"
140 Input "どれ";N
150 if N=1 then goto 240
160 if N=2 then goto 520
170 if N=3 then goto 240 else goto 140
190 '*END SUB
191 Cls 3
Paint (0,0),7,7
200 END
240 Cls 3'ルーレット メイン プログラム
241 gosub 411
242 C=D
264 gosub 390
265 Locate 0,2
267 Print "ルーレットを開始します。"
269 Locate 0,3
270 Input "倍率を入れてください。";B
275 if B<=1 then goto 370
276 Locate 0,4
277 Print "現在"
278 gosub 470
279 Locate 0,5
280 Input "掛け金を入れてください。";K
285 if K<=0 then goto 279
286 if K>C then goto 279
290 A=Fix(Rnd()*B)+1
294 Locate 0,7
295 Input "数を予想してください。";X
296 if X>B then goto 297 else goto 300
297 Print "倍率以下で1以上の数にして下さい。"
298 goto 295
300 if A=X then goto 450
301 if A<>X then goto 460
303 if C=0 then goto 360
350 goto 264
360 Print "ゲームオーバー...読み込み中..."
361 Sleep(3000) '表示時間 約3秒
363 goto 50
369 'ルーレット サブ プログラム
370 Cls 3
380 goto 265
390 Color 1,6
400 Cls 3
Paint (0,0),6,6
410 return
411 D=1000 '最初の所持金
449 return
450 C=C-K+(B*K)
455 goto 303
460 C=C-K
465 goto 303
470 Locate 4,4
480 Print ;C
490 Locate 11,4
500 Print "コイン有ります"
510 return
520 Cls 3 '数当て メインプログラム
555 gosub 660
550 Print "数当てを開始します。"
560 Input "1からどのくらいまでの数にしますか";B
565 goto 750
570 Print "コンピュータが作った数を当ててください。"
580 Print "間違ってれば、もっと多いかもっと少ないかをいいます。"
590 C=Int(Rnd()*B)+1
600 N=1
610 Input "数は何でしょうか";K
615 if K<1 then goto 770
620 if C=K then goto 690
630 goto 800
650 '数当て サブ プログラム
660 Color 2,5
670 Cls 3
Paint (0,0),5,5
680 return
690 Print " - - "
700 Print " @ @ "
710 Print " O "
730 if N<5 then Print "大当たり~" else Print "当たり"
731 Print "スコア";N;"手"
735 Input "まだやりますか?(Y/N)";X$
736 if X$="Y" then goto 520
737 if X$="N" then goto 900
738 if X$="y" then goto 520
739 if X$="n" then goto 900
741 goto 735
750 if Int(B)=B then 570 else goto 760
760 if B=1 then goto 780
770 Print "正の整数を入れてください。"
777 goto 560
780 Print "正の整数で、1以外の数値を入れてください。"
790 goto 560
800 Print " / \"
810 Print " @ @ "
820 Print " "
830 Print " ^ "
840 if C<K then goto 850 else goto 880
850 Print "もっと少ない"
860 N=N+1
870 goto 610
880 Print "もっと多い"
888 N=N+1
890 goto 610
900 Print "...読み込み中..."
910 Sleep(3000)
930 goto 50
しかし懐かしいですね、苦悩しながら一行一行
丁寧にコードを打っていってたあの時代が。
でもビギナーがいきなりメモリ操作してOS落とすのはどうかと。>>たけぽい
あ、滅茶苦茶長い長文失礼。
僕も独学でBASIC言語(古い本があったので読み漁りましたがおそらくN88系かと。)を覚えました。
確か一番最初に作ったオリジナルプログラムの内容は「キーボードを叩いた回数をカウントして、指定回数以上になったらプログラムを終了させる」だったかなぁ。何百行(実際には30行ほど。)と書いたのを今でも覚えてます。
因みにそのプログラムはまだ動かしていません。要するに小さなノートにチマチマと書いておいてほうったらかしっていう話になるんですが、色々知識が身に付いた後で見直したけどバグもエラーになりそうなところも特にありませんでしたねぇ。
あのノート、どこに行ったかなぁ・・・。
それでパソコンで実際に作り始めたのは中2の春からかなぁ。最初に動かしたプログラムの内容は忘れましたが、自分が作ったプログラムで現存する中で最古のプログラムのコードはまだあるので載せます。
N88系BASIC用(元code)
[code]
40 '初期設定
50 CLS 3
60 COLOR 0,7,0,7,1
70 CLS 3
80 ON ERROR GOTO *ERROR1
90 LOCATE 0,0
100 PRINT "このプログラムはフリーです。"
103 FOR I=1 TO 2000 '表示時間 約1秒
106 NEXT I
109 CLS 3
110 PRINT "どのゲームで遊びますか?"
120 PRINT "ルーレット=1,数当て=2,"
140 INPUT "どれ";N
150 if N=1 then goto 240
160 if N=2 then goto 520
170 if N=3 then goto 240 else goto 140
190 *END SUB
191 CLS 3
200 END
210 *ERROR1
220 LINE (0,0)-(530,300),7,BF
223 COLOR 2
225 PRINT "エラーが起きました。"
230 goto 100
240 CLS 3'ルーレット メイン プログラム
241 gosub 411
242 C=D
264 gosub 390
265 LOCATE 0,2
267 PRINT "ルーレットを開始します。"
269 LOCATE 0,3
270 INPUT "倍率を入れてください。";B
275 if B<=1 then goto 370
276 LOCATE 0,4
277 PRINT "現在"
278 gosub 470
279 LOCATE 0,5
280 INPUT "掛け金を入れてください。";K
285 if K<=0 then goto 279
286 if K>C then goto 279
290 A=FIX(RND*B)+1
294 LOCATE 0,7
295 INPUT "数を予想してください。";X
296 if X>B then goto 297 else goto 300
297 PRINT "倍率以下で1以上の数にして下さい。"
298 goto 295
300 if A=X then goto 450
301 if A<>X then goto 460
303 if C=0 then goto 360
350 goto 264
360 PRINT "ゲームオーバー...読み込み中..."
361 FOR I=1 TO 6000 '表示時間 約3秒
362 NEXT I
363 goto 50
369 'ルーレット サブ プログラム
370 CLS 3
380 goto 265
390 COLOR 1,6,1,6,1
400 CLS 3
410 RETURN
411 D=1000 '最初の所持金
449 RETURN
450 C=C-K+(B*K)
455 goto 303
460 C=C-K
465 goto 303
470 LOCATE 4,4
480 PRINT ;C
490 LOCATE 11,4
500 PRINT "コイン有ります"
510 RETURN
520 CLS 3 '数当て メインプログラム
530 CONSOLE 0,25,0,1
540 CLS 3
555 gosub 660
550 PRINT "数当てを開始します。"
560 INPUT "1からどのくらいまでの数にしますか";B
565 goto 750
570 PRINT "コンピュータが作った数を当ててください。"
580 PRINT "間違ってれば、もっと多いかもっと少ないかをいいます。"
590 C=INT(RND*B)+1
600 N=1
610 INPUT "数は何でしょうか";K
615 if K<1 then goto 770
620 if C=K then goto 690
630 goto 800
650 '数当て サブ プログラム
660 COLOR 2,5,2,5,1
670 CLS 3
680 RETURN
690 PRINT " - - "
700 PRINT " @ @ "
710 PRINT " O "
730 if N<5 then PRINT "大当たり~" else PRINT "当たり"
731 PRINT "スコア";N;"手"
735 INPUT "まだやりますか?(Y/N)";X$
736 if X$="Y" then goto 520
737 if X$="N" then goto 900
738 if X$="y" then goto 520
739 if X$="n" then goto 900
741 goto 735
750 if INT(B)=B then 570 else goto 760
760 if B=1 then goto 780
770 PRINT "正の整数を入れてください。"
777 goto 560
780 PRINT "正の整数で、1以外の数値を入れてください。"
790 goto 560
800 PRINT " / \"
810 PRINT " @ @ "
820 PRINT " "
830 PRINT " ^ "
840 if C<K then goto 850 else 880
850 PRINT "もっと少ない"
860 N=N+1
870 goto 610
880 PRINT "もっと多い"
888 N=N+1
890 goto 610
900 PRINT "...読み込み中..."
910 FOR I=1 TO 6000
920 NEXT I
930 goto 50
940 '
[/code]
ちょっとコードを変更してActiveBasicに対応させたコード↓
[code]
#N88BASIC
Dim I,N,A,B,C,D,X$ As String,X,K
40 '初期設定
50 Cls 3
60 Color 0,7
70 Cls 3
Paint (0,0),7,7
90 Locate 0,0
100 Print "このプログラムはフリーです。"
103 Sleep(1000)
109 Cls 3
Paint (0,0),7,7
110 Print "どのゲームで遊びますか?"
120 Print "ルーレット=1,数当て=2,"
140 Input "どれ";N
150 if N=1 then goto 240
160 if N=2 then goto 520
170 if N=3 then goto 240 else goto 140
190 '*END SUB
191 Cls 3
Paint (0,0),7,7
200 END
240 Cls 3'ルーレット メイン プログラム
241 gosub 411
242 C=D
264 gosub 390
265 Locate 0,2
267 Print "ルーレットを開始します。"
269 Locate 0,3
270 Input "倍率を入れてください。";B
275 if B<=1 then goto 370
276 Locate 0,4
277 Print "現在"
278 gosub 470
279 Locate 0,5
280 Input "掛け金を入れてください。";K
285 if K<=0 then goto 279
286 if K>C then goto 279
290 A=Fix(Rnd()*B)+1
294 Locate 0,7
295 Input "数を予想してください。";X
296 if X>B then goto 297 else goto 300
297 Print "倍率以下で1以上の数にして下さい。"
298 goto 295
300 if A=X then goto 450
301 if A<>X then goto 460
303 if C=0 then goto 360
350 goto 264
360 Print "ゲームオーバー...読み込み中..."
361 Sleep(3000) '表示時間 約3秒
363 goto 50
369 'ルーレット サブ プログラム
370 Cls 3
380 goto 265
390 Color 1,6
400 Cls 3
Paint (0,0),6,6
410 return
411 D=1000 '最初の所持金
449 return
450 C=C-K+(B*K)
455 goto 303
460 C=C-K
465 goto 303
470 Locate 4,4
480 Print ;C
490 Locate 11,4
500 Print "コイン有ります"
510 return
520 Cls 3 '数当て メインプログラム
555 gosub 660
550 Print "数当てを開始します。"
560 Input "1からどのくらいまでの数にしますか";B
565 goto 750
570 Print "コンピュータが作った数を当ててください。"
580 Print "間違ってれば、もっと多いかもっと少ないかをいいます。"
590 C=Int(Rnd()*B)+1
600 N=1
610 Input "数は何でしょうか";K
615 if K<1 then goto 770
620 if C=K then goto 690
630 goto 800
650 '数当て サブ プログラム
660 Color 2,5
670 Cls 3
Paint (0,0),5,5
680 return
690 Print " - - "
700 Print " @ @ "
710 Print " O "
730 if N<5 then Print "大当たり~" else Print "当たり"
731 Print "スコア";N;"手"
735 Input "まだやりますか?(Y/N)";X$
736 if X$="Y" then goto 520
737 if X$="N" then goto 900
738 if X$="y" then goto 520
739 if X$="n" then goto 900
741 goto 735
750 if Int(B)=B then 570 else goto 760
760 if B=1 then goto 780
770 Print "正の整数を入れてください。"
777 goto 560
780 Print "正の整数で、1以外の数値を入れてください。"
790 goto 560
800 Print " / \"
810 Print " @ @ "
820 Print " "
830 Print " ^ "
840 if C<K then goto 850 else goto 880
850 Print "もっと少ない"
860 N=N+1
870 goto 610
880 Print "もっと多い"
888 N=N+1
890 goto 610
900 Print "...読み込み中..."
910 Sleep(3000)
930 goto 50
[/code]
しかし懐かしいですね、苦悩しながら一行一行[u]丁寧に[/u]コードを打っていってたあの時代が。
でもビギナーがいきなりメモリ操作してOS落とすのはどうかと。>>たけぽい
あ、滅茶苦茶長い長文失礼。