X



BASICで始めるプログラム

■ このスレッドは過去ログ倉庫に格納されています
0001
垢版 |
04/11/15 14:58:03ID:WRw2R6g+
昔ながらのBASICでプログラムを始めてみませんか。
基本的にこのスレを見るだけで話が完結するようにする予定です。

初心者スレは乱立しておりますが、ここはあくまでBASICオンリーで
話を進めて行きます。


とりあえず最初にBASICのツールを準備しましょう。
ツール
99BASIC
http://www.sagami.ne.jp/tadaka/99Basic/
N88互換BASIC for Windows95
ttp://www.vector.co.jp/soft/win95/prog/se055956.html

参考リンク
はじめてのプログラミング講座
ttp://www.light-staff.com/prg/prg.html

関連スレ
【初心者歓迎】スレを立てる前にココで質問を【Part6】
http://pc5.2ch.net/test/read.cgi/gamedev/1094627404/
【N88?】 99BASIC 【MSX?】
http://pc5.2ch.net/test/read.cgi/tech/1099847305/
N88-BASICの神業
http://pc5.2ch.net/test/read.cgi/gamedev/1007371918/
ズブの初心者がゲーム作れるまで勉強するスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1005132370/l50
今日から必死で〜   
http://pc5.2ch.net/test/read.cgi/gamedev/1064146178/l50
【目標ない奴】おまいらに課題を与える。【集まれ】
http://pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50
0079受験生 ◆3VUXqvbfSY
垢版 |
04/11/22 12:15:38ID:PA06jHd/
まだ、inkey$は早いだろ…
256回も解放してるが…初心者には何の事やら解らないだろうし…
最初のは
1 if ""<>inkey$ then 1
の方が機能的
0080
垢版 |
04/11/22 12:44:44ID:YmrooOVl
>>77
おお、良いっすね。

フォントのカラーを変えるとかgosub辺りも
使って行くと良い感じな気がします。

実は今から出張してしまうので、代わりに講義してくれたりすると助かりますです。

>>78

一応初心者にもわかりやすい部分から説明してますです。
inkey$も当然、そのうち触れるとは思いますけど、
受験生さんのおっしゃるとおり、まだちょっと早いかと。

0081
垢版 |
04/11/22 13:02:39ID:YmrooOVl
一応定期的にそれまでやった講義の内容をまとめました。

・print ""
・基礎の計算、加減乗除
・代入の基礎、letは省略可能
・行の概念、goto命令文
・for 〜 next
・input
・if 〜 then
・end

次回辺りからはフォントの色変更、locate、gosub等を使って
簡単なテキストアドベンチャーを作りながら、BASICプログラムへの理解を深める。
と言う流れになる予定ですが、
「これをやった方がわかりやすいんじゃない?」
と言うのがありましたら、講義をお願いします。
講義をして下さる方は誰でも先生ですから。
宜しくお願いします。
0082受験生 ◆3VUXqvbfSY
垢版 |
04/11/22 13:23:47ID:PA06jHd/
>>80 了解しました。
では…基本の文字色変更から

例文:
10 for a=1 to 7
20 color a:print "代理講師を任された!"
30 next a

さて…新しい命令が有るのが解りますか?
そう、color命令です。
このcolor命令は多様な使い方が有りますが、取り合えずは color 色番号で文字色が変更出来ることを覚えて下さい。

色番号は
0が黒
1が青
2が赤
3が紫
4が緑
5が水
6が黄
7が白

となっています。
0083番外編
垢版 |
04/11/22 14:06:17ID:tA6Om7KW
色番号の秘密

次のようにイメージしてください
3つのスイッチがあります
スイッチは左から緑赤青の順でならんでいます
さらに緑=4、赤=2、青=1というなぞの数値を持っています

ここから紫の番号が何番か知ることができます
紫は赤と青の合成色です
スイッチにすると緑OFF赤ON青ONです
ここでONになったスイッチのなぞの数値を足してみます
赤と青がONなので2+1=3ですね
そう紫は3です

試しに黄色はどうでしょう
黄色は緑と赤の合成色です
緑ON赤ON青OFF
なぞの数値をスイッチにあわせて足していきます
4+2=6
黄色は6ですね

こういったルールで色番号というのは決められています
丸暗記でもいいですけど、豆知識程度に覚えておくといいと思います
0086名前は開発中のものです。
垢版 |
04/11/23 21:40:48ID:DdR3avtr
おなじく教わりたい。

BASIC、ポケコン使って子供の遊戯王カード用プログラムとか書いてるけど、ほんとに基本的な文法使うだけで冗長なプログラムになってるし。もっとまとまった感じのカッコイイプログラム書きたいので、講師のかたがたよろしくです!
0089受験生 ◆3VUXqvbfSY
垢版 |
04/11/24 12:23:37ID:rcBZKkdV
色々な意見が有るようですが
私は代理講師なので……何とも言えません
ただ、恐らくスレ主様は見てくれている方がいらっしゃる限り止めないと思うので、私も止めません。

さて、本日はlocate命令です
例:
10 width 80,20 '画面のサイズをN88BASICに合わせる
20 for loops=0 to 19
30 locate loops*4,loops '位置確定
40 for wait=0 to 999:next wait
50 print "ニヤ"
60 next loops

実行してみて下さい
ニヤが画面を斜めに切るはずです

新しい命令は二つ
width命令は画面サイズを変更する為の命令です。N88BASIC環境に合わせるため
よこ80文字、たて20文字の設定にしています。

locate命令は文字を表示する位置を指定します。上記の設定にすると左上の座標が0,0となり右下の座標が79,19となりますね。
0090受験生 ◆3VUXqvbfSY
垢版 |
04/11/24 14:28:27ID:rcBZKkdV
とりあえずノルマを終わらしちゃいますか。
と言うことでgosub命令もやりましょう
これでだいぶ冗長的なコードから脱却できますよ。

例:
10 width 80,20:cls '画面を綺麗に
20 '階乗(m!)を求める
30 *main 'メイン
40 input "入力値の階乗を行います。整数m=";m
50 gosub *factorial
60 print "結果は";Ans;"になりました。"
70 goto *main
100 *factorial
110 Ans=1
120 for loops=m to 1 step -1
130 Ans=Ans*loops
140 next loops
150 return


コードが長めなので詳しくは次に書きますが、重要なのはgosub 〜 returnです。
このようにして、N88BASICは見かけ上、コードを分割する事が出来ます。

gosubラベルでプログラムは指定されたラベルへ飛び、return命令でgosubが実行された所に返ってきます。
0092受験生
垢版 |
04/11/24 15:00:47ID:rcBZKkdV
あれ?
80,25でしたっけ?
0093受験生 ◆3VUXqvbfSY
垢版 |
04/11/24 15:15:13ID:rcBZKkdV
ああ!画面サイズ!
いや…あの〜
N88互換BASICではwidthを変更すると文字サイズでなくウィンドウがリサイズされるんですよ。

う〜済みません。
0094
垢版 |
04/11/24 21:57:49ID:y4qxcEAO
ども、ただ今戻りました。

受験生さん、講義ありがとうございました。
文字色の変更、とてもわかりやすかったです。

一応受験生さんの講義に補足をさせて頂きますと、
コメントと言いまして、プログラム中で、何を行っているのかを
わかりやすくする為に書き込む時に使うのが
「 '  」チョン、これです。
改行するまでが、コメントとして扱われます。
あまりに細かくコメントを書くこともありませんが、
ある程度何をやっているのか、大雑把でかまいませんので、コメントを書くと良いです。

次に僕なりのlocate の説明を。
locateは文字の座標の位置を示す命令文で、
座標の基本は受験生さんの仰る通り、ウィンドウの一番左上の角っちょがX軸(横軸)0、Y軸(縦軸)0になります。
数学とかで習ったのとはちょっと違う部分がありまして、X軸は、数字が増える度に1つ分づつ右に増えるので、わかりやすいのですが、
Y軸は数字が増えるほど、上ではなく、 ” 下 ” に向かって行く事になります。
わかりやすいように以下のプログラムを書いてみました。

10 for i=0 to 9
20 x=i:y=i
30 locate x,y
40 print "x"x,"y"y
50 next i

わかりづらい人の為に下のように書いておきました、要するにやってる事はこう言う事です。
10 locate 0,0
20 print "x 0""y0"
10 locate 1,1
20 print "x 1""y1" 'これを10まで繰り返す
0095
垢版 |
04/11/24 22:03:18ID:y4qxcEAO
えーと、

x 0            y0
 x 1           y1
  x 2          y2


みたいに表示されたはずです。

x の位置が 横。
y の位置は 縦。

どうでしょう?少しわかりづらいですかね?
自分で試してみるとわかりやすいかもしれません。
ともあれ、locateを使うと文字の位置を自由に変えることができると言うことがわかりましたね。

今日はこの辺で。

明日は、受験生さんのやって下さったgosubと、ウィンドウのサイズ変更等をやるかもです。
受験生さんは、受験生さんで、お好きなように講義を進めて下さって結構ですので、どうかお願いします。
0097
垢版 |
04/11/24 22:11:09ID:y4qxcEAO
>>94の下の部分の行数が失敗でしたね。

10 locate 0,0
20 print "x 0""y0"
30 locate 1,1
40 print "x 1""y1"
60 locate 2,2
70 print "x 2""y2"
80 locate 3,3
90 print "x 3""y3"


こんな感じですね。
場所を指定して、XとYの場所がわかるようにしてあります。

0、X1,X2,X3,X4,X5
Y1
Y2
Y3
Y4
Y5

みたいになるほうがわかりやすかったですかね。

0098
垢版 |
04/11/24 22:12:16ID:y4qxcEAO
>>96
だから、なんであなたが文章のまとまったわかりやすい講義をしてくれないのかが、不思議で仕方ないのですが。
あなたが講義してくれれば皆が幸せなはずなのに。
0100
垢版 |
04/11/24 22:25:38ID:y4qxcEAO
やー、人に言うぐらいなら当然、できて然るべきなはずですから。
010147
垢版 |
04/11/24 22:43:51ID:YV2Hsw7w
センセー講座のリクエストです。
ネタ切れの時にでもやって頂けると嬉しっす。

飛び先に行番号しか指定出来ない( *ラベルが使えない)BASICで
なるべくスパゲッティーにならないようにするノウハウをご教示下さい。
0102受験生 ◆3VUXqvbfSY
垢版 |
04/11/25 00:19:28ID:oYfirNw0
まず、変数表を作る
次に飛ぶ番号にコメントでサブ名を書く

飛ばす方も どこに飛ばすかコメントを書く

なるべく細かく分けるべし
拡張性を持たせたいなら、サブ内はサブ内のみの変数を使うべき。渡す変数もそのサブ用に用意

疑似構造化がアンチスパへの道
0104受験生 ◆3VUXqvbfSY
垢版 |
04/11/25 15:39:10ID:oYfirNw0
>>47さんはどのようなソフトを製作中なのでしょうか?
お手伝いしますよ!

暇ですから orz
010747
垢版 |
04/11/27 00:25:09ID:F2x68tLT
受験生さん、丁寧な解説有難うございます。

MSX-BASICは古雑誌のプログラムリストを打ち込む事くらいでしか
使ったことがありません。
あんな短いソースで立派にゲームになってしまうのが不思議です。
前にミニゲームでも作ってみようとしたけど、言語の制限が結構
厳しくて途方に暮れてしまいますた。
とは言え、こういう箱庭的環境はなかなか新鮮です(リアルタイムに
体験しなかったせいか、憧れのような感覚を持ってる)。
講義が済んだら自作もやってみようかって思ってます。
0108
垢版 |
04/11/29 10:49:32ID:FXE8ZqDE
明日、とか予告しておいてさぼっちゃいました。
まあのんびりやりましょう。
しかも予定していた内容とは違う事を書きます。

えーと、今日やる命令文は結構数が多いです。
だけど、結構どれも関連していると言うか、まあ使う機会が多いと思います。
命令文って程の物でもないような物もありますが。

cls

と入れてみましょう。
画面が綺麗さっぱりしました。
これは「CL」ear 「S」creen クリアスクリーンの略らしいです。
プログラムの中で、画面を綺麗にしてから、描画をする時とかに使います。

次にコーディング(タカタカとプログラムを打ち込む事)をして、実行した後に、
今まで打ったコード(プログラムの中身)を見たい時には

list

と打ちます。
今まで打ったプログラムが表示されたはずです。
これは基本的には表示されるだけですんで、修正をしたい時には

edit

を使います。
「あー、もうだりぃ!最初からやり直す!!」とか言うときには

new
を使います。
0109
垢版 |
04/11/29 10:56:12ID:FXE8ZqDE
new

を使うと、今まで打ったコードが完全に無くなります。
やり直す時にだけ使いましょう。

プログラムの中で使うと、プログラムを実行している途中で、全てのプログラムを消してしまうと言う恐ろしい命令なので、
やり直す時ぐらいにしか使いませんが。

次に、保存の方法です。

save

と打つだけです。簡単簡単♪
保存したデータを呼び出す方法も、もうわかるでしょう?

load

と入れるだけです。

基本的な物ばかりですが、絶対に覚えておきたいのはclsぐらいで、
他の物は「こういう事ができるんだ」程度の事だけ知っておいてもらえば、
皆さんが必要になった時にだけ、このレスを見直すなり何なりして、使っていくうちに覚えると思います。

次回こそ予定通り、gosub等の説明になると思います。
0110名前は開発中のものです。
垢版 |
04/12/01 07:24:12ID:iTLgF3QP
変数を箱に例える教え方なんだけど
全くの初心者は箱(変数)に値が1つしか入れれないということを教えないと
いくつでも箱(変数)に入ると思う人間がいる
例えば、

a = 1
a = 2
print a

で 2 しか表示されないのは何故? 1 も入れたのに〜〜ってなるw
0111名前は開発中のものです。
垢版 |
04/12/01 15:36:52ID:5385mFns
>>110
代入が LET 文であることは、BASIC のいい点の1つだと思う。
あと、値に名前をつけると教えた方が経験的に混乱が少ない。
0115名前は開発中のものです。
垢版 |
04/12/13 15:33:34ID:N95BAu/h
age
0116名前は開発中のものです。
垢版 |
04/12/15 15:36:58ID:0c2g+PqE
4つの数字をいれて大きい順に並べ替えて表示する プログラムを教えてください!!
0117名前は開発中のものです。
垢版 |
04/12/17 13:19:44ID:fev8z1nP
こんな感じ? 長いことBASIC使ってないから細かいところは忘れた

N=4:DIM A(N)
' 入力
FOR I=1 TO N:INPUT "数字を入力してください。";A(I):NEXT I
' 大きい順にソート
FOR I=1 TO N-1
FOR J=I+1 TO N
IF A(I)<A(J) THEN SWAP A(I),A(J)
NEXT J
NEXT I
' 出力
FOR I=1 TO N:PRINT A(I):NEXT I
END
0119名前は開発中のものです。
垢版 |
04/12/26 18:59:17ID:3iBL3BwQ
>>1
またBASICで構造化もオブジェクト指向も理解できない連中作るつもり?
やるならそこまでやってくれよ。ガンガレ。
0124星電改
垢版 |
2005/04/21(木) 04:53:28ID:iPerqW6y
99BASIC って2DのDirectXが使えるじゃん
CMDモジュレータ法式で自作OCXのAPIを作れば
3Dだって出来るのでは 入力OCX命令の引数と戻り値
のアクセス方法の一覧表を公開アップして欲しいな
 99BASIC 超大大好き
0127名前は開発中のものです。
垢版 |
2005/04/21(木) 21:28:16ID:eBcs7v00
今日図書館いってみたらBASIC関係の本があったから借りたら
すげープログラムだった
10 'ohanasi
20 CONSOLE ,,1,1:cls 3
30 COLOR 6
40 PRINT "こんにちは!"
50 PRINT "きみ、おとこのこ?"
60 COLOR 3
65 INPUT R$
70 IF R$="ウン" OR R$="うん" THEN F=1 ELSE F=0
80 COLOR 6
90 PRINT "なまえは、なんていうの?"
100 COLOR 3
110 INPUT R$
120 COLOR 6
130 PRINT "そう、";R$;
140 IF F=1 THEN PRINT "くん"; ELSE PRINT "さん";
150 PRINT "ていうの。ぼくパソコン。よろしく。"
160 PRINT "じゃーね、さよなら。"
165 COLOR 7
170 END
まあ暇だったらやってみて
0129名前は開発中のものです。
垢版 |
2005/05/11(水) 04:48:29ID:CfqJtZRz
>>127
IFを使った判断の練習プログラムとかじゃなきゃ
65 INPUT "1、はい 0、いいえ";F
で70消したらいいんじゃない?
0130名前は開発中のものです。
垢版 |
2005/05/13(金) 14:50:26ID:HjZIRNmV
RENUM くらいしてもいいとおもうけど

>>128
さん付けで呼ばれるだけだろ



しかしシュールな会話だ
HAL9000 は遠いな
0131名前は開発中のものです。
垢版 |
2005/05/22(日) 22:56:53ID:I2GD6gR/
携帯BASIC
ttp://satoo.jp/

携帯ではじめるBASIC
暇があいたらちょこちょこやるだけでもおもしろい
0132名前は開発中のものです。
垢版 |
2005/06/07(火) 21:26:45ID:yo3opcbo
>>131
EZじゃ使えんorz
0133名前は開発中のものです。
垢版 |
2005/06/07(火) 22:15:38ID:NPiASjVJ
au、ドコモ対応のはず
かく言う俺はauだから
0135 ◆3VUXqvbfSY
垢版 |
2005/06/16(木) 20:32:22ID:O4GtZyUD

どうだ
0137名前は開発中のものです。
垢版 |
2005/12/09(金) 17:03:09ID:vfvrdkjv
N88互換BASIC for Windows95、XPにインストールできないorz。
RAINBOW.DIBがないって言われたって……。
0142名前は開発中のものです。
垢版 |
2006/07/31(月) 11:23:21ID:hfatxh3k
あげるか
0147TAKABON
垢版 |
2007/09/10(月) 10:02:23ID:sJ1x0VMY
初心者ですが、長いプログラムをコピー&貼り付けで
取り込むことはできませんか。
0150名前は開発中のものです。
垢版 |
2007/09/12(水) 05:36:33ID:w8MOG4ne
>>147
メモ張で開けばコピペできるよ
(多のエディタでもいい)

>>149
vipにスレが起って解決済です。
指摘の通り、1→mもしくは、0→mらしい
1〜5を足すプログラム
0151名前は開発中のものです。
垢版 |
2007/09/12(水) 10:10:59ID:XIDHMzsz
今後はプログラム板に宿題系のスレがあるからそっちに行けよ。
ここはBASICなんて使わない人間の方がおおいんだからさ。
0153名前は開発中のものです。
垢版 |
2007/09/30(日) 02:59:19ID:Y9xrLwEr
BASIC懐かしい。ブロック崩しとか作ってた。
でもこれから始めるならHSPとかのほうがいいよね
0155名前は開発中のものです。
垢版 |
2007/10/02(火) 09:45:03ID:CtJ5PskK
BASICはあくまでもBASICです。
業界標準でもあり、国際標準化されており、世界的に通用する。
0159名前は開発中のものです。
垢版 |
2007/10/04(木) 00:20:20ID:nUcIegVE
>>158
> 業界標準でもあり、国際標準化されており、世界的に通用する。

冗談も体外にせえよw

という俺はDelphi使い orz
0162名前は開発中のものです。
垢版 |
2007/10/13(土) 01:01:57ID:pLncj342
見えるけど>>152に行ったほうがいいと思う。
こんなスレ見てる俺もBASICのコードもう覚えてないし。EndIfって使えたっけ?
0163名前は開発中のものです。
垢版 |
2007/10/17(水) 16:55:49ID:7Yp6uFd6
N88互換BASIC for Windows95 で作ったものですが
手元にWIN機が無く動作させられません。誰か代わりに動かしてくれませんか?

代入値が(M,N)=(500,1000)と(M,N)=(500,10)の2回分の試行結果が欲しいです。
宜しくお願いします。

1000 INPUT M
1010 INPUT N
1020 SUM1=0:SUM2=0
1030 FOR I=1 TO M
1040 PI=3.14159
1050 X=0:Y=0
1060 FOR J=1 TO N
1070 A=RND*2*PI
1080 NEWX=X+SIN(A):NEWY=Y+COS(A)
1090 X=NEWX:Y=NEWY
1080 NEXTJ
1090 P=SQR(NEWX^2+NEWY^2)
1100 SUM1=SUM1+P
1110 SUM2=SUM2+P^2
1120 NEXT I
1130 Q=SUM1/M
1140 R=SUM2/M
1150 S=SQR(R-Q^2)
1160 PRINT Q: PRINT S
0165名前は開発中のものです。
垢版 |
2008/08/02(土) 18:50:12ID:kbS1bHcM
age
0168名前は開発中のものです。
垢版 |
2008/10/18(土) 18:51:12ID:8xBrOipw
ttp://support.microsoft.com/kb/135315
↑このページのからOlddos.exeをダウンロードする
んで、解凍すると、その中にQbasicが入ってる


0169名前は開発中のものです。
垢版 |
2008/11/17(月) 05:06:50ID:y4WnVtKP
http://petitbasic.jp/

JAVAでつくったBASICらしいのですが・・・
”LOAD”と打ってでてくるウィンドウにコピーしたプログラムをペーストして
RUNするらしいのですが、自分は、そのウィンドウで右クリックが効かず、
ペーストできません;

他の人はどうなんでしよう・・・・ダイレクトモードではちゃんと動くのですが;
0172名前は開発中のものです。
垢版 |
2008/11/21(金) 20:39:28ID:ZX60cMxl
MSのビルゲイツ、8bit時代のBASICは全部奴が書いている。
MSエクセルでBASICが動く。
それも行番号付のBASIC
そりゃそうさ、MSだからゲイツBASICの互換は当たり前。
0173名前は開発中のものです。
垢版 |
2008/12/23(火) 21:05:08ID:4vrFgdBi
>>170
どうもありがとうございました。
ペーストできました; 今、ウィンドウでBASICが動いてますw
しかし、JAVA遅いですね;コンパイラとかできるのかなぁ?
なんか、作ってみたいと思います Orz

(ナゼ;Orzなんだ;)
0174名前は開発中のものです。
垢版 |
2008/12/23(火) 21:30:49ID:ZObBPY8O
>>172
うそはよくないよ
全部ではないな

まあ、主要な日本のマイコンのROMベーシックはMSだったが
日本ならシャープ製や他にもBASIC作ってるところはあったぞ
0176名前は開発中のものです。
垢版 |
2009/12/23(水) 09:45:24ID:/b3xAk7C
誰かこれ質問答えてやってくれ

> FbIDEとFreeBASIC v.020を -lang qbオプションで使用していますが,文字化けで日本語表示がうまくいきません。お差支えなければご教示願えませんでしょうか。

プログラミング/言語・コンパイラ/freeBasic - game-develop.com wiki
http://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%B8%C0%B8%EC%A1%A6%A5%B3%A5%F3%A5%D1%A5%A4%A5%E9%2FfreeBasic
0177名前は開発中のものです。
垢版 |
2009/12/24(木) 10:34:59ID:3OzRzXSb
Linuxならそのくらいの事は自力で解決出来て当然
人に聞かなきゃわからないような奴はLinuxを使うべきじゃない
FreeBASICは海外製で日本語を扱う事を全く考慮していないから
日本語を扱いたければFreeBASICを使わない事が最良
WindowsならVisualBasicがあるからそっちを使えばいい
0178名前は開発中のものです。
垢版 |
2010/01/01(金) 18:50:34ID:pKcQDXoP
>>177
また古典的なレスを。
それって十年前に何度も読まされた。
英語読まないなら使うなとかってのと一緒に。

あれからりぬくすも日本語マニュアルが充実してきたし
CUI絶対視する奴も少なくなってきた。

あんたのような奴がりぬくすコミュニティを駄目にするんだって気が付いたほうがいい。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況