投稿
プチコン三号のプログラムの組み方がいまいちよく解りません…。  変数とか代入とか数学やんけ(・ω・)m9 プチコンweb入門でサンプル改造をしたり、他の人の作品をいろいろと遊んだりするところまではいきましたー。が、そこから何をすればいいのか解りません。(解説本買った方がいいのかな……むぅぅ) 僕みたいなアホでも解るように丁寧な説明よろしくお願いします!!!
4そうだね
プレイ済み
返信[1]
親投稿
********** itd12d
はい、それではまず、変数について学びましょ 変数というのは、内容が変わる数ということで変数と名付けられています。使用方法としては入力を求めるINPUT、ゲームのスコアなどです。 たとえばA=5とすると、Aの中には5が入り、PRINT Aとすると、Aに入っている値、つまり「5」が表示されます。 また変数にはいくつか形があり、「A(数値型)」と「A$(文字列型)」があります。数値型には文字列は入らず、文字列型に入った数字では計算などができません。 また質問あればどうぞ
1そうだね
プレイ済み
返信[2]
親投稿
なるほど! 変数というものをどのように使うかの概念がよく分かっていなかったのでありがたいです。 スコアなどの変わる数に使うんですね~ 勉強になります! 質問というか何を質問したらいいのか分からないので今の変数のような事を教えて頂ければとても有りがたいです
0そうだね
プレイ済み
返信[3]
親投稿
********** itd12d
ではでは、次はスプライトについてです。 スプライトというのは動くキャラクターのようなもので、ゲームの主人公とか敵とかに使います。普通はSPDEFからのSPSETで使用しますが、親切なスマイルブームさんは何個もSPDEFを設定してくれています。SPSETでは管理番号、DEFの番号(スマイルツールを参照)を設定し、SPSET 0,15のように使います。また、位置はSPOFSで管理番号、X座標、Y座標を指定して変更できます。SPSTARTでアニメーション会社、SPANIMでスゥーって感じの移動などができます。辺り判定はちょっと特殊で、SPCOLとSPHITSPを使います。これについては要望があれば詳しく解説します。
0そうだね
プレイ済み
返信[4]
親投稿
ツララ LongIceSword
変数に代入はプログラムの基本中の基本なんですけど、慣れてないとこれ別に要らない処理なんじゃ?って思いますよね。 さっき俺計算したし、なんて。 普通の算数等の計算式で書く「=」は左辺の中身の参照って意味で使われる事が多いですけど、プチコンでだと左辺に右辺の値を代入という意味になります。 で、変数を使う意味ですが、プチコンは記憶力は良いけど記憶喪失の人みたいなもので、最初は使える情報はシステムで用意されている数値だけなんですね。 で、プチコンはそれらを組み合わせて自分で使う新しい情報を作るってことは指示されないと出来ないので、プログラムする人が作業台(変数)に使える情報を用意(代入)してやって、やれる事を色々増やしてやるっていうのが変数を使う大まかなイメージですかね。
0そうだね
プレイ済み
返信[5]
親投稿
********** itd12d
んで、ツララさんに続いて代入について。 代入とは変数に値を入れることです。たとえばA=5ならAは5、A=100ならAには100が入ります。ここで注意するべきことは、A(数値型)には文字列("あああ"など)が入らないということです。もしAの中に文字列を入れたいのならAの後ろに$をつけて、A$にすることで文字列を入れることができます。んで、この代入をうまく使えば、計算もできます。A=5+7みたいに。計算の記号は+(足す),-(引く),*(かける),/(わる)があります。もちろん変数同士の計算もできます。A=A+5とすると、元々のAに5がプラスされます。次に文字列型の変数ですが、こちらは文字、つまり""で囲った文字しか代入できません(例外あり)。こちらは""で囲めば何でも入りますが、"だけは入りません。こちらも計算はできますが、+しか使えません。続く
1そうだね
プレイ済み
返信[6]
親投稿
********** itd12d
続き つまり、A$=A$+3とするとエラーになります。type mismatchだったかな?だからといって、A$=A$+"3"とすると、A$の中に4が入っていても、A$は"43"になってしまいます。そこで登場するのがVALという命令。このVALというのは文字列を数値に変換してくれるのです。使い方はA=VAL(A$)みたいな感じ。こうするとA$が"5"だとすると、Aは5になります。これでA=A+3とすれば計算できます。逆に数値を文字列にしたい場合は、STR$という命令を使います。使い方はA$=STR$(A)みたいな。この場合はAが5ならA$は"5"になります。ではまた今度
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
最初のうちは「プログラムを作る」というのは難しいことをするイメージがあるかもしれないですが、プチコン3号に「こうしなさい」という指示を順番に書き連ねたらよいだけです。 ただし、プチコン3号などのコンピュータはお馬鹿だから言われたことを言われたようにしか実行することしかできません。そのため、本当に細かい部分まで具体的に指示を出す必要があります。 だから初心者がプログラムを作る際に難しいと感じるのはこういう場合には具体的にどのような指示を出すのかという点だと思います。 これは自分が作りたいものと似たようなプログラムを実際に見て覚えると良いです。 あとはひたすら書いていけば自然に身に付きます。 変数や基本的な命令の使い方を覚えておかないと指示の出しようがないため最初は覚えることが多いですが、自分で作れるようになるとプログラミングはとても楽しいのでぜひ頑張ってください。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
解説本(公式ガイドブック)については私は買ったので実際にどんな感じかを簡単に書いておきます。 最初の部分の50ページは初めてプチコン3号を触る人でも分かるようにプチコン3号の入手の仕方から始まり簡単なゲームを1つ完成させるまでを漫画形式で書かれており初心者向けです。 中盤には説明書やヘルプより詳しい命令の使い方を記されており、終盤にはスプライトやBGなどのキャラを1つ1つ番号付きで解説しています。 プログラミングに慣れた中級者以上の人でも資料代わりと思えば十分に役に立ちます。 公式ガイドは買って損はないと思いますが、誤植も結構目立つため気になるならば修正された第2版まで待つというのもありかもしれませんね。ただし、修正版が出るかどうかは私は知りません。
1そうだね
プレイ済み
返信[9]
親投稿
DBさん»今書いてるところまでついていってないのですが、つまり数字を表したいときには、例えば【例1】A=3 や、【例2】A=A-12(これはAが12以上じゃなきゃダメなのかな?)という解釈で宜しいでしょうか。 またこれを実行するときはPRINT命令でやったのですが、他にもありますか?? 難しいけれど頑張ります。
0そうだね
プレイ済み
返信[10]
親投稿
数字型のやつは分かったのですが、いまいち文字型の意味が分かりません A$で=を繋げた後に何どうすればいいんでしょうか。
0そうだね
プレイ済み
返信[11]
親投稿
********** itd12d
A=A-12については、Aが12以下の場合、-の値が帰ってきます。 PRINT以外には・・・うーん、なにかあったかな?あと、PRINTは 「?」でも使えます。便利ですよ。 文字列型は、A$を=でつなげて、好きな文字を""で囲むだけです。あとはPRINT A$でA$の中身が表示されますよ。
1そうだね
プレイ済み
返信[12]
親投稿
ツララ LongIceSword
画面に何かを表示したい時に一番手っ取り早くて簡単なのがLOCATEとPRINT命令でコンソール画面(文字情報表示専用のレイヤー)を操作するのと、頭に"G"が付く系統のグラフィック面を操作する命令で点や直線や矩形等を描くことですね。 各命令には「書式」という決まり事があって、書式に従って命令を書かないとプチコンは「何言ってるのか分りません」とエラーを出して折角書いたプログラムを実行してくれません。 プログラムを作るモードで命令(適当に文字を打っても上欄に候補が出るので分らない時はそれを参考に)を入力してキーボード右上の「?」をタッチするとヘルプが表示されるので、まず色んな命令をヘルプを参考にエラーが出ない様に書く練習と、動作の確認をしてみると良いですよ。
1そうだね
プレイ済み
返信[13]
親投稿
********** itd12d
次じゃ次。LOCATEじゃ。 LOCATEというのは文字列の先頭の文字の表示位置を変更するものです。たとえば、"あいうえお"なら、最初の「あ」の位置を変更して、「いうえお」はそのあとについていく形になります。LOCATEの文法は LOCATE X座標,Y座標(,Z座標) となっています。X座標というのは横の位置です。0~49まで指定することができます。Y座標は0~29まで指定できる、縦の位置です。Z座標については任意ですし、あまり使わないので覚える必要はほとんどないのですが、奥行きです。あまり使いません(二回目)。LOCATEは文字にのみ使えるもので、スプライトやバックグラウンドには使えません。けっこう使うのでLOCATEは覚えておいてくださいね。
1そうだね
プレイ済み
返信[14]
親投稿
********** itd12d
さらにさらに、ちょっとDEEPなBEEPについて・・・笑えよ。 BEEPは効果音を鳴らす命令です。効果音の一覧はスマイルツールから確認することができます。以上・・・ではありません。 BEEPでは、周波数と音量、パンポットを指定することができます。 周波数は俺もよくわかっていません。誰か教えて。音量は0~127を指定することができます。パンポットというのは、まあBEEPが再生されるスピーカーの位置ですかね。ヘルプによると、0で左側のスピーカー、64で両方から、127で右のスピーカーから音が出るようです。それだけ。
1そうだね
プレイ済み
返信[15]
親投稿
********** itd12d
ちょっと簡単な奴行きましょう、WAITについて。 WAIT フレーム数 で指定したフレーム数だけプログラムの実行を停止します。フレームというのは1/60秒のことで、60フレームで1秒になります。 似たような命令にVSYNCというのがありますが、前回のVSYNC呼び出しからの経過フレーム数を指定してプログラムの実行を停止します。まあとりあえずWAITで大丈夫です^q^
1そうだね
プレイ済み
返信[16]
親投稿
ディープなビープ…ははは(真顔) むむむ、なんか一気に増えましたが、BEEPは分かりやすいので良かったです。これらの事がどうプログラムをしてゲームが出来ていくのか楽しみです。
0そうだね
プレイ済み
返信[17]
親投稿
LOCATEの説明のにて。言いたいことは分かるのですが、どのように入力したらいいのでしょうか。 例『ROCATE"あいうえお"』でいいのですか? またフレームのやつは頭の隅に入れておという考えでいいでしょーか。
0そうだね
プレイ済み
返信[18]
親投稿
0そうだね
プレイ済み
返信[19]
親投稿
********** itd12d
LOCATE"あいうえお"だとSyntaxになります。LOCATE 10,10:?"あいうえお"のように使用します。フレームは頭の片隅でokです!
0そうだね
プレイ済み
返信[20]
親投稿
********** itd12d
んじゃ、久しぶりにいきますか。今回はIF~THENについてです。 なんとなく予想がつくとは思いますが、IF~THENは、条件によって○○するという命令文です。たとえば、 IF A==5 THEN PRINT A ENDIF のようにすると、変数Aが5になった時に、Aの中身を表示するようにできます。また、一行で表せる(IF A==5 THEN PRINT A のようなとき)ときは、ENDIFを省略できます。IFと実行する内容を別の行にした場合は、ENDIFが必須となります。また、ELSEIFというのもありまして、IFで1つめの条件に当てはまらなかった場合は、ELSEIFを指定してやると、何個も条件を指定してやることができます。それでも当てはまらない場合はあきらめ・・・ないで、「ELSE」と入力することで、すべての条件に当てはまらなかった場合に実行する命令を書くことができます。続く
0そうだね
プレイ済み
返信[21]
親投稿
********** itd12d
続き IFに使用するのは==だけではなく、ANDやORも使用することができます。ANDというのはANDの両脇に書いた条件が2つともそろった場合に命令を実行する命令です。ほかにも使い道はありますが、それはまた今度。たとえば、IF A==5 AND B==6 THEN とすれば、Aが5でBが6の場合にのみ、THENの後に書かれた命令を実行します。多分、ANDは&&に省略することもできます。 続いてORについて。ORは、ORの両脇に書かれた命令どちらかがそろった場合にTHENの後の命令を実行します。例えば、IF A==5 OR B==6 THENとすれば、Aが5のときか、Bが6のときにのみTHENの後の命令を実行します。また、ORは多分||とも省略できます。 IF命令については使用頻度がかな~り高いので、覚えておくとプログラミングの幅が大幅に広がると思います。幅だけn(ry
0そうだね
プレイ済み
返信[22]
親投稿
よくわからん((そもそもあんま理解しようとしてないっっ
0そうだね
プレイ済み
返信[23]
親投稿
********** itd12d
詳しくはエディットモードで「IF」と入力してキーボードの右上の?ボタンを押すと説明が見れます。
0そうだね
プレイ済み
返信[24]
親投稿
はい。 俺もさっきやろうと思って「?ボタン」やりました。 例が出てきたのでその通りに入力しましたー。 よく分かりませんが、前つららさんが言ったように色んな命令で試してみますね!!
0そうだね
プレイ済み
返信[25]
親投稿
********** itd12d
頑張ってください!
0そうだね
プレイ済み