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
0002
垢版 |
04/11/15 15:01:47ID:WRw2R6g+
その他の参考リンク(全て作りかけ)
SukesanのBASIC講座
ttp://www.students.chiba-u.ac.jp/~y9p1074/i/basic/basicent.htm
BASICクリエイターズルーム
ttp://www.geocities.co.jp/HeartLand-Suzuran/1752/basic_b.html
受験生のためのコンピュータ・BASIC講座
ttp://hp.vector.co.jp/authors/VA006094/basic/
0003
垢版 |
04/11/15 15:04:10ID:WRw2R6g+
とりあえずツールの準備はできましたか?
僕自身は99BASICを使用しますが、
Windows2000だとインストールできないと言う意見もありますので、
N88BASIC、もしくは他のツールを用意して下さい。
お願いします。
0004
垢版 |
04/11/15 15:15:44ID:WRw2R6g+
ツールの準備ができましたら、早速いじくりまわしてみましょう。
あんまり御託なんか聞きたくないでしょ?

99 Basic Interpreter for Windows (ver 1.19)
Copyright (c) 1999-2002 by Ida Takayuki
OK


とか出てますね。

とりあえず文字を書いて見ましょう。

「必死だな」と入力してみましょう

さあ早速実行です!

Syntax error
OK

と出ました

全然OKじゃありません。
何がOKだごるぁと思うのも無理はありません。
しかしこれは要するに簡単に言えばコンピューターが
「あんた間違えてるよ、OK?ウププ」
とか言ってくれているのです。

何が間違えなのかと言うと、あなたがコンピュータ様にわかる言葉でお話をしないからいけないのです。
簡単に言えばコンピュータ様はコンピュータの国から来たコンピュータ語しか喋れない外人さんなのです。

なのでただの日本語で喋りかけたからコンピュータ様は「あんた間違えてるよ、OK?ウププ」と
コンピュータ語で喋ったと言うわけですね。
0005
垢版 |
04/11/15 15:24:37ID:WRw2R6g+
日本語が通じないなんてなんて面倒な奴でしょう!

しかしコンピュータ様はこちらがコンピュータ語で喋りかければ
出来る範囲で何でもやってくれる下僕のような物でもあるのです。

こんな奴に”様”をなど付ける必要はありません。
とりあえずコンちゃんとでも呼ぶ事にしましょう。

先ほどはコンちゃんに理解できる言葉で話しかけ無かった為、
「あんた間違えてるよ、OK?ウププ」などと言い返されてしまいましたが、
次にはコンちゃんに理解できる言葉で話しかけてみましょう。

print "必死だな"

と入力してエンターを押して実行します。

必死だな
OK


(先ほど書き忘れましたが、これはただの点滅です。カーソルがここにあるよって印ですが、
たぶんもうあまり書くことはないでしょう。要するに気にすんなと)

となりました。

おめでとうございます!
あなたはコンちゃんとの記念すべき最初のコミュニケーションを取る事ができたのです!
0006
垢版 |
04/11/15 15:37:14ID:WRw2R6g+
この
print ”  ”

と言うのは文字を表示する為の命令文でして

print ”ひらがなちゃん”

print ”カタカナくん”

print ”漢字様”

print ”アルファベットだabc”

print ”数字も平気さ123”

と、色々な文字を表示させる事ができます。

色々な文字を表示させてみましょう。

あと

print ”  ”
print”  ”

半角スペースを抜いて書いてもコンちゃんに話は伝わりますが、
見た目として美しいと思う方を選びましょう。
コンちゃんは面食いではないのでブサイクでも受け入れてくれますが
普通の人はブサイクが嫌いです。
皆さんも嫌いだと思います。
だから美しく!エレガントに!書きましょう!
0007名前は開発中のものです。
垢版 |
04/11/15 15:54:50ID:bkk726p0
そろそろいい?

ぶっちゃけ自分でページ作ったらどうよ。
2chだと文字のみだからわかりずらいべ。
0008
垢版 |
04/11/15 16:07:33ID:WRw2R6g+
却下します。
ホームページを持つのなんて面倒ですし、
僕以外の人にも講師をして貰いたいですから。
0010
垢版 |
04/11/15 16:33:08ID:WRw2R6g+
これぐらいなら行けるようになるみたいです。
http://www.sagami.ne.jp/tadaka/99Basic/sample.html

相当の根性がいる気もしますが、(実際ソースを見ると凄い事になってます)
そうしたらもっと便利な機能がある他の言語に行くのもよし。

basic=基礎的と言うぐらいですから、初めてプログラムに触るには
うってつけかと。

実際、C言語だと
#include<stdio.h>

int main()
{
printf("文字を書くニョ");

return 0;

}

とか書かなきゃならないのが
print "文字を書くニョ"

だけで済むってのは簡単で良いじゃないですか。
0011
垢版 |
04/11/15 16:39:05ID:WRw2R6g+
先ほど連続投稿ではじかれた所をぺたり。
ブサイクでも受け入れてくれると言いました。
本当にそうなのでしょうか。

試しに

pRiNT " "
prInt" "

と大文字小文字を分けて試して見ましょう。

おおっ!!受け入れてくれます!
コンちゃんの愛は無制限なのですね!!

しかし、ここで全角アルファベットどんを使ってみるとどうなるでしょうか

PRINT ” ”
でどうだっ!?

Syntax error
OK

となりました。
「いくら俺でも、こいつとだけは勘弁」
・・・そんな相手も世の中にはいると言うことでしょうか。
「って言うかお前女じゃなくて男じゃん!!」
みたいな感じですかね。

コンちゃんへの命令は基本的に半角スペースを用いましょう、と言うお話だったのさ。

今日のお話はこれまで。
0012名前は開発中のものです。
垢版 |
04/11/15 17:14:25ID:QSekwSRF
このままこのスレを見てたら、トランプゲームタイプのネットワーク対戦ゲームは作れますか?
0013
垢版 |
04/11/15 17:20:58ID:WRw2R6g+
千里の道も一歩からと言います。

Basicの先には
VisualBasic.netなんてのもありますし、
不可能は無いんじゃないかと。

ただ、僕自身がそんなレベルには無いので、
そういったレベルの講師様を召還するか、
僕が教えているうちにそういったレベルにまで到達できれば
このスレだけで話が完結しますね。
0015名前は開発中のものです。
垢版 |
04/11/15 23:22:35ID:iEfH5u7g
BASICの現状と展望ってどうなの?
もれもN88-BASIC触ったことがあるし
当時どれだけパソオタの胸を熱くしたかも知ったうえで言うんだけど
もう役割は終えたと思うんだよ
今、99BASICから入る人ってまずいないと思う

あと落としてみてみたんだけど99BASICはBEEP音やめて欲すい
最近BEEP音てハードウェアエラーの時にしか聞かないから心臓とまるかと思った

懐かしいのは懐かしいんだけどね…
あえて言語名は出さないけどポストBASICの位置を獲得してる言語があるからねぇ
コンテストもにぎわってたみたいだし
応募作品いくつかみたけど、それこそ当時のBASICの臭いがぷんぷんしてました(いい意味で)
よかったねぇあのころは
0016名前は開発中のものです。
垢版 |
04/11/16 01:37:16ID:mSns2ZwJ
懐古スレはここですか?
アマグラマーにとって最高のオモチャだったよね
けど今はもっとリッチな環境が無料で手に入ってしまうからね
BASICは過去の遺物でしかないのかも
>>1が連載する気ならそれなりに両スレとして育つこともありえるけど
0017名前は開発中のものです。
垢版 |
04/11/16 05:04:24ID:O9qTWMGY
スレタイ
【マイコンBASICマガジンを懐古するスレ】
【DrDを偲んで初級BASIC講座を開くスレ】
のほうが人が集まったような気がしないでもない。
0019
垢版 |
04/11/16 09:39:13ID:TmDiOozj
>>18
手伝ってくださいますか?
0020
垢版 |
04/11/16 09:39:54ID:TmDiOozj
おお、俺のID DiOだ。
JOJO厨としては嬉しい限り。
0022
垢版 |
04/11/16 09:58:14ID:TmDiOozj
じゃあそれなりに宜しくお願いします〜
0023
垢版 |
04/11/16 09:59:09ID:TmDiOozj
昨日は文字の表示の仕方をやりました。で、今日は計算のやり方を学びましょう。

コンピュータってのは電子計算機などと呼ばれております通り
計算をする為に生まれ、計算をする為に死んでいく・・・悲しい男よ・・・
と言うような訳でもありませんが、まあ基本なので。

print 1+1

と入力してみましょう。

2
OK
と出ましたね。
1と1を足した結果を表示してます。
1と1を足したのだから当然2と出る訳ですね。

ここでちょっと思い出して下さい。
文字を表示するのには
print "文字"
って入れましたね。
そんな感じで

print "1+1"

と入れて試してみると

1+1
OK

と言う結果が出ます。
「"」チョンチョン(ダブルクォーテーションとか言いますけどチョンチョンでも何でも好きに呼べば良いと思います)
で囲んだ部分は計算等の処理をしないで、そのまんま表示される訳ですねー。
0024
垢版 |
04/11/16 10:00:21ID:TmDiOozj
では計算の仕方がわかった所で色々試してみましょう。
どのプログラムにも言える事でしょうし、
どのアプリケーションにも言える事ですが、
色々と自分で触って試してみると「あー、こう言う事ねー」「んー、これは駄目なんだー」
と言う事がわかって良いです。色々試して見ましょう。
楽しいですよ。

計算の基本である加減乗除(たし算、ひき算、かけ算、わり算)を一気に並べます。
実行して試してみてね。

たし算
print 100+200

ひき算
print 300-200

かけ算
print 4*5

わり算
print 6/3

いわゆる加減乗除は以上の通りでできます。
加減乗除オールスターズ!


「+」と「-」はそのまんまですね。
「*」と「/」は普段使うような記号ではありませんが、イメージはしやすいと思います。
0026
垢版 |
04/11/16 10:19:14ID:TmDiOozj
>>15
まー、HSPとかも良いんでしょうけどー
HSPスレも初心者スレ並に多い事ですしー。

それにBASICの場合は既に多くの有能なプログラマを
排出していると言う実績もある上に、ある程度以上の
年齢の方なら誰でも知ってる、と言う事でも
最初に触れる言語としてはやっぱり良いんじゃないかと。

>>16
懐古しながら、新規のBASICユーザーに色々とご教授下さい。
まー、BCCとか高性能なコンパイラが無料で手に入る状況ってのは
ある意味天国みたいな状況と言えないこともないですが、
初心者には設定するだけでお腹が一杯みたいな部分もありますからね。
一応、しばらくは不定期で連載続ける気です。
>>17
実は僕がべーマガを読んでた訳じゃあないので・・・
最近何冊か手に入れたんですけどね。
http://basicmagazine.homeip.net/

>>25
冗長でない文章で講義して下さると助かります。

あと昔のPC板にあった良さげなスレです。
PRINT("BASIC デマターリカタルスレ。")
http://bubble2.2ch.net/test/read.cgi/i4004/1009478372/
0028
垢版 |
04/11/16 10:56:57ID:TmDiOozj
やー職場で暇なんでー。

もう少しすると年末調整やら何やらで忙しくなるんですけどねー。
0032(´Д`)
垢版 |
04/11/16 17:22:08ID:VIxObihF
セーブの場所にパソコン本体を指定してもうまくセーブできないみたいで、
ロードしてもファイルがないって言われます。
なんでですか?
save"c:\test"って感じでやってるんですけど。
0033
垢版 |
04/11/16 17:34:25ID:TmDiOozj
>>32
えーと、99BASICを使用しているって事で良いんですよね?
試しに実行してみました。

save "\c

で、Cドライブに保存されますので

save "\c\test

ってな感じで良いかと思われます。
0034
垢版 |
04/11/16 17:38:14ID:TmDiOozj
ごめんなさい。
なんかtestと言うフォルダを作ったら駄目になったー。

ちょっと待っててね。
0036
垢版 |
04/11/16 17:48:03ID:TmDiOozj
save "\c

だとCの一番上にセーブされますね。
ただtestというフォルダを作って、
その中にデータをセーブするやり方がちょっとわかりませんでした。
ごめんなさい。

わかったらまたお知らせしまーす。
0037(´Д`)
垢版 |
04/11/16 18:30:30ID:VIxObihF
>>36
なにもフォルダもつくらずに
save "c:\hello"としたらセーブできました(ロードもちゃんとできました)

いろいろ手間取らせちゃってすいません。
ありがとうございました。
0038
垢版 |
04/11/16 18:32:47ID:c1wTVCJh
あいあい。
良かったでつ。
0039(´Д`)
垢版 |
04/11/16 18:33:27ID:VIxObihF
ブロック崩しをつくりたいです。安西先生・・。
0041(´Д`)
垢版 |
04/11/16 18:44:44ID:VIxObihF
>>40
あ、ありがとうございます!
0042名前は開発中のものです。
垢版 |
04/11/16 19:52:25ID:fcqxyC5l
今日の講師 1   (ID:c1wTVCJh)

今日の生徒 名無し(ID:VIxObihF)
                     1名
0043名前は開発中のものです。
垢版 |
04/11/16 23:05:33ID:fcqxyC5l
>1さんは>15あたりの意見に対しては何も言わないんですね
スルーですか?
0044
垢版 |
04/11/16 23:16:55ID:c1wTVCJh
>>43
一応>>26で一度レスはしてますけど。
>>15の意見のどのような部分に対してどのようなレスをすれば良かったんですかねー。

BASICの現状も展望もお好きなように考えて下さい、としか言いようがないですね。
役割を終えたと思うのは個人的な意見ですが、
僕はプログラムの楽しさを知る取っ掛かりとしては
”いまさら”だろうが何だろうがBASICが一番良いと思ったんですよ。
HSPとかが良い人は自由にそちらに行けば良い訳で、別に強制している訳じゃないですから。

BEEP音は昔のBASICでも出る訳で、ワザワザ鳴らさなければ鳴るようなものでも無いと思うのですが
自分で鳴らしておいて「止めて欲しい」などと仰るのは、なんだかなあ、って感じです。

こんな感じのレスしかできませんが、何か問題ありますか。
0047名前は開発中のものです。
垢版 |
04/11/16 23:52:20ID:rt9OVmJT
>>1で紹介されてたのはいまいちそそられないんで(スマソ)
ゲーム専用機と化してたMSXでチャレンジしようと思ってるけど
良いですか?
と言っても行番号系は触ったことないのでしばらくROMりますが。
004947
垢版 |
04/11/17 01:44:52ID:D+qlxGKt
いやー、せっかくこういうスレが立ったから、Mファンの1画面プログラム
みたいなのを組んで晒してみたいなと思い立っただけなので。
(そしてハードを突っつくのにちょっと興味があったから)
ちなみにそれ系スクリプトは、以前にYGSを愛用していましたよ。
0050
垢版 |
04/11/17 13:18:20ID:IOCnedLT
次に、代入って奴をやってみましょう。
中学生になって、算数が数学と名前を変えた時に
この辺ですっころんだ人も多いかと思います。

まー、僕がそうなんですけどぅー。

だいたい代とか名前につくのが良くないですね。
田代まさ(略)とか代々木アニメー(略)とか

・・・それはともかく
やって見ましょう!

a=1 と入れます

OK

これでaと言う箱の中に1と言う数字が入った事になります。


いきなり箱とか言われても「はぁ?」と思う方もいるかと思いますので、説明しましょう。
0051
垢版 |
04/11/17 13:18:53ID:IOCnedLT
同じ内容を

let a=1

と書く事ができまして、
let と言うのは貸家と言う意味だそうで(エキサイト翻訳でもそう言ってたしー)

なんと言いますか、コンちゃんの頭の中はだだっ広い荒野で、
そこに家畜である所の1くんを放牧しても、
どこにいるのかわからなくなっちゃうのです。
なので、1くんを監禁というか、ぶちこんでおく檻、っていうか家が必要なのです。
永住させる訳でもないので、貸家を用意して、そこに1くんを入れておきましょう。

他にも家畜をぶちこんでおく家が欲しかったりもするので、
貸家には名前をつけておきます。

ここではaと言う名前の家に入れて置きましょう。

「貸家 aに1くんをぶちこんでおくよ。」

と言う意味なのです。

今は貸家と説明しましたが、要するに物を入れると言う
イメージさえつかめれば貸家でも箱でも山崎ハコでも
どのようにイメージされてもかまいません。

要するにイメージが掴めりゃあ良いんですから。

0052
垢版 |
04/11/17 13:19:50ID:IOCnedLT
で、aの中に1くんを入れた所で、次に

b=2

と入れましょう。
あれ?「let」が無くなってますね。
実はこのletは書かないでも全然かまいません。
一々「貸家 let」なんて書いておくのは面倒ですね。
人間だって一々要らない物を書くのは面倒ですし、さらには実はコンちゃんまでも面倒がってしまいますので、
むしろ書かない方が良いです。

これで、aの中には1が、bの中には2が入った事になります。
これを代入と言います。

で、代入した所で、次は計算式も作ってみましょう。

c=a+b

と書きます。
なんで a+b=cと書いちゃ駄目なのかと言うと、そう言う文法上のルールがあるから、って感じですかね。

文法のルールや細かい部分を間違えると意味を取り違えてしまったり、
プログラムそのものが動かなくなってしまう事があります。
これは日本語でも同じですね。
「僕は昨日女性の姿を描きました」が
「僕は昨日女性の姿でカキました」となったら
意味が違ってしまいます。
気を付けましょう。
0053
垢版 |
04/11/17 13:20:36ID:IOCnedLT
で、c の中身はa+bになった事になりますので、

print c と入れると

計算結果の

3
OK

が表示される事になります。

今日はこの辺でおしまいです。

明日はやるかどうか微妙ですが、次回は
行とかgotoとかをやる予定です。
0055
垢版 |
04/11/17 14:04:51ID:IOCnedLT
まあ好みですからー。
冗長なのが嫌なら、そうでない講義をお願いします。
0056
垢版 |
04/11/17 15:26:20ID:IOCnedLT
暇なのでこんなのを書いて見た。
文句を言う人はこれででも遊んでて下ちい。

10 input "クマー!が現れた!どうする?(1:戦う 2:逃げる) ";a
20 if a=1 then color2:print "ヌッ殺されますた":goto 50
30 if a=2 then print"しかし回り込まれてしまった!":goto 10
40 print "選びなおしてね":goto 10
50 print "ゲームオーバー:color 7:end



0058名前は開発中のものです。
垢版 |
04/11/18 00:28:28ID:TWrmiXDB
>だいたい代とか名前につくのが良くないですね。
>田代まさ(略)とか代々木アニメー(略)とか

冗長でもなんでもいいけどさ、こういう事とか、あまりにも寒いギャグとかは止めようぜ。
好きで書いていることかもしれんけど、荒らされる原因にもなりかねないからね。

個人的には応援しようと思うスレなので、面倒になって逃げ出さない事を祈っとくよ。


文句だけ書くのもなんだから、QBASICだけど、ここまでできるってHPを紹介しとく。

ttp://www.yamagame.com/
0061
垢版 |
04/11/18 09:36:31ID:1AVSUSTr
今日は行番号とgoto命令文をやります。

「ぬるぽ」
「ガッ」
と書きたいとして、

print "ぬるぽ""ガッ"

と書いてみます。

ぬるぽガッ

と続けて表示されてしまいました。
改行されないでそのまま続けて表示されてしまいました。
微妙に考えていた事とは違うようです。
そこで以下のように書きなおしてみます。

10 print "ぬるぽ"
20 print "ガッ"

さて、ここでエンターキーを押せば、今まででしたらすぐにプログラムが実行されてしまいましたが、
今回の場合エンターキーをどれほど押しても、ひたすら改行されるだけになってしまいます。
どうやってプログラムの実行をすれば良いのかと言うと、

run

と入れて見てください。

ぬるぽ
ガッ

と実行されたはずです。よくプログラムを走らせる、などと言うのはこのrunから来てるんですね。
0062
垢版 |
04/11/18 09:39:29ID:1AVSUSTr
左側に10とか20とか数字が入ってますね。
これが行番号と言うもので、プログラムは基本的にこの数字の順番に実行されて行きます。
数が1,2,,,,と細かく区切らないのは、後で追加する項目が出ても安心なようにです。
これで多い日も安心ですね!
次に

10 print "ぬるぽ"
20 print "ガッ"
30 goto 10

と、入れてみる前に!注意点があります。
このプログラムはいわゆる”無限ループ”と言うものになっております。
実行してると、ひたすら

ぬるぽ
ガッ
ぬるぽ
ガッ
ぬるぽ
ガッ
と繰り返し続けるようになっています。

これはプログラムの流れが
10行目 ぬるぽ と書くよ
20行目 ガッ と書くよ
30行目 10行目に 行ってね

と言う流れになってて、いつまで経ってもこの流れから抜け出す事ができないからです。
仕方がないので慌てず騒がず、ctrl + c を押してプログラムを終了させましょう
(ブレイクって言います、プログラムの流れの中で組んだりもします)

今日はおしまいです。明日は何をしましょうね。
0063
垢版 |
04/11/18 09:50:35ID:1AVSUSTr
>>58
それは単にあなたが止めさせたいだけの話のようなので、寒かろうがなんだろうが却下します。
まぁ、プログラムに触った事がない人の為に、と思って、色々と概念を説明するとなると、
どうしても文章が長くなってしまう物だと思いますが、
段々とそう言った話はしないように(って言うかできないように)なって行くと思うので心配しないように。
そもそも、こんな過疎板で荒らしをするのは暇人の私怨程度の物なので恐れるに足りませんな。

それと何度も言ってますが、文句を言うなら、文句の出ないような文章で、あなたが講義して下さい。
文句を言うだけじゃつまらないでしょう。
あなたが講義をすれば、とても素晴らしいものになるんでしょうから、僕も冗長な文章で講義なんてしないで済みますし。
是非お願いしますね。

>>60
誰がどう考えてもプログラム初心者向けの講義をして下さい。頼みましたよ。
0064(´Д`)
垢版 |
04/11/18 09:53:07ID:E6x1v5DW
俺はおもしろいと思うよ
0065
垢版 |
04/11/18 10:01:38ID:1AVSUSTr
>>64
ありがとう!
0066
垢版 |
04/11/19 13:08:38ID:WUe+rUrk
今日はこんな感じの事をやりましょう。

モナー1が現れた!
モナー2が現れた!
(中略)
モナー10が現れた!

と書く方法です。
実は、これまでの講義の内容で、既にやろうと思えばできるようになっています。

10 print "モナー1が現れた!"
20 print "モナー2が現れた!"
30 print "モナー3が現れた!"

と言う風に書けば良いのですから。
だけど一々全部書いて行くのは面倒ですね。
そこで、for 〜 next と言う命令文を使います。
以下の文章を書いてみて下さい。

10 fot i=0 to 10
20 print "モナーが現れた!"
30 next i

モナーが現れた!
モナーが現れた!
モナーが現れた!
と表示されたはずです。
0067
垢版 |
04/11/19 13:09:11ID:WUe+rUrk
数を数えてみましょう。
1,2,3・・・
あれ?11匹のモナーがいる事になりますね。
表示したいのは10匹です。

これは「for の後の i=0が出発点となって順番にゴールが10で、その数字になるまで繰り返せ。」
と言う命令文でして、0,1,2,3,と続けている訳ですから、
1から10ではなくて、0から10の数だけ繰り返しをしているので、
11の数がある事になります。
出発点かゴールの数を変えれば良い訳です。今回はゴールの数を変えますね。

10 for i=0 to 9
20 print "モナーが現れた!"
30 next i

これで、ちょうど10匹になりました。

そうそう、next i ってのはfor とセットになっている物なので、あまり気にしないで良いです。
だけど無いとエラーになっちゃいますので、付けておきましょう。
0068
垢版 |
04/11/19 13:10:41ID:WUe+rUrk
次にモナーに番号を振りましょう。
番号を連続で表示させる方法として、

10 for i=0 to 9
20 a=a+1
30 print a
40 next i

と書きます。
これで1から10までの数字が表示される事になりました。

a=a+1と言うのは、aと言う小屋の中に、1を足すぞ。と言う表示です。
イコールだからと言って同じ数字と言うわけではなく、代入していくんだぞ、と言う事なんです。
aに1を足す、1になる→繰り返し1を足す、2になる→繰り返し1を足す、3になる→10になるまで繰り返す

で、その結果を30行目で表示させる。
と言う命令文になっております。

この二つの文字を10回表示させる命令文と数字を順番に10回表示させる命令文を合体させれば、
考えていたような結果が得られそうですね。合体してみると以下のようになります。

10 for i=0 to 9
20 a=a+1
30 print"モナー"a"が現れた!"
40 next i

30行目のprint の中身が少しわかりづらいですかね?

"(チョンチョン)で囲まれた所は文字を表示する部分で、aは計算の結果を表示している訳ですね。
"ここから文字を表示する、ここまで→"aは計算の結果"ここから文字を表示する、ここまで→"
と言う感じになっております。自分で色々試してみて、理解を深めてくださいね。
今日はこの辺で。
0069受験生 ◆3VUXqvbfSY
垢版 |
04/11/19 15:59:16ID:ehav1ZNP
10 for i=0 to 9
20 print "モナー",i+1,"が現れた!"
30 next i

の方がスッキリ

…それはそうと printって型が変わるとき,が必要だった気が…まあ僕がN88互換BASICなのが悪いのかもしれません
0070
垢版 |
04/11/19 17:51:52ID:MBHTLlch
>>69
なるほど、そっちの方がすっきりしますね。

( , )とか( ; )で囲った方が良いのかなー、と思いましたが、
>>68のままで走っちゃったので、
なんで囲むのか、とか説明するのが面倒になっちゃったので、
無しでやっちゃいました。
>>69のようにする場合だと、ちゃんと囲まないと走りませんね。

フォローありがとうございます。
0072
垢版 |
04/11/21 14:52:18ID:SsuwGL/L
前回は10匹のモナーが出てきましたね。
さてどうしましょう?逃げましょうか?皆ひっぱたきますか?
今回は何らかの選択肢を作りましょう。

10 input "1か2を選んで押して下さい";a
20 if a=1 then print "1を押したね":goto 50
30 if a=2 then print "2を押したね":goto 50
40 print "1か2以外を押しやがったな!やり直しだ!":goto 10
50 end

こんな感じが基本でしょうか。

inputはキーボードの何を押したか判定する命令文です。

10行目の内容を説明します。
「 " 」チョンチョンをつける事で、同時にprintみたいに文字を表示させる事ができます。
で、表示の内容は、これから何を選択したら良いのか、と言う事を表示します。
今回は1か2を選択させます。
更に「 a 」と言う空き部屋を作りました。

20行目では「if」と言う命令文も出てきましたね。
これは「もしも」って事ですので、以下の内容と併せて

もしも「 a  」 の中身が1だったら

と言う事になってます。
で、「 a 」の中身が1だとしたら、"1を押したね"と表示して 50行目に行け。
って書いてある訳です。
大丈夫ですかね。

30行目の内容は20行目とほとんど変わりませんね。
0073
垢版 |
04/11/21 14:59:02ID:SsuwGL/L
40行目ですが、
「 a 」の中身が1でも2でも無かった時にここに来ます。

実は20行目や30行目の最後に「50行目に行く」と言う指令が出ていない場合は、
1や2を選んでもここに来てしまうんですけどね。

とにかく、40行目に来てしまうと言う事は、
1や2以外の数字を押してしまった時と言う事になります。
想定外の答えを入れられた時にはどうするのか、と言う事も一応考えている訳ですね。
で、想定外の答えなので、やりなおしをさせる事にしました。

50行目のendでこのプログラムを終了します。
今までは無しにしておりましたが、プログラムは「ここから始まりだよ」「ここで終わるよ」
と言う事をちゃんと命令しておくものなのです。
これからはちゃんと終わりを書いておきましょうね。
0074
垢版 |
04/11/21 15:09:29ID:SsuwGL/L
説明を忘れていましたが、:(コロン、点々とか呼んでもよし、キョンシーズみたいですが)をつけるとある程度続けてプログラムを実行する事ができます。

ではでは、今やったプログラムをちょっと変えるだけで選択肢とその結果の表示ができますね。


10 input "モナー達をどうしますか?(1:全員ひっぱたく 2:逃げるよ!)";a
20 if a=1 then print "モナー達は「逝ってよし!」と叫んで、泣きながら家に帰っていきました":goto 50
30 if a=2 then print "しかし回り込まれてしまった!":goto 10
40 print "1か2以外を押しやがったな!やり直しだ!":goto 10
50 print "あなたは「さあ!殺伐と牛丼でも食いにいくか!」と言いましたとさ"
60 end

今日の所はお終いです。
次は何をやりましょうね。

他の講師の方が来てくれると本当に助かるんですけど。
0075
垢版 |
04/11/21 15:10:42ID:SsuwGL/L
>>71
頑張って下さい!
0076
垢版 |
04/11/21 15:14:58ID:SsuwGL/L
更に補足です。

「 ; 」(セミコロン、点とチョン)と「 : 」(コロン、点々とか呼んでもいいですが、スイカ頭とか呼ぶと他の人たちにわかりにくいのでちょっと駄目かも)
は似てますがちょっと違います。

気をつけてくださいね。
0077受験生 ◆3VUXqvbfSY
垢版 |
04/11/21 17:57:45ID:Odg0h6l+
LOCATEを使い
簡単なテキストアドベンチャー
はどうでしょうか?
0078名前は開発中のものです。
垢版 |
04/11/22 02:20:12ID:fmGV7anf
>>1
>10 input "1か2を選んで押して下さい";a
それだとreturnが必要だから、こうじゃないの?↓

1 for i=0 to 255:i$=inkey$:next
2 print "1か2を選んで押して下さい";
3 i$=inkey$:if i$="" then 3
4 a=val(i$)

昔はよくやったなぁ
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
やー、人に言うぐらいなら当然、できて然るべきなはずですから。
■ このスレッドは過去ログ倉庫に格納されています

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