プチコン3号 SmileBASIC コミュニティ返信[1]親投稿でんぺん DENPEN2016/1/17 21:17Yボタン(FILE)でAボタン(LOAD)のXボタン(BGSCREENデータ)でファイル名を入力「TANKA_BG」で読み込めるはずですよ。 プログラムでの読み込み方は僕の過去の投稿を参考にしてみてください。以下のページです。 日付:2015/1/8 スマイルツールのマップエディタでレイヤー形式で保存したセーブファイルの読み込みサンプルです。 https://miiverse.nintendo.net/posts/AYIHAAAEAADHVHhnrtEuhw1そうだね プレイ済み2017/11/03 18:24:20に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿でんぺん DENPEN2016/1/17 17:44あまさとしおんさんの言われるようにボタンを離したタイミングでSPSTOP命令を使えば止めれます。 ただSPSTOPで止めた場合、次にSPANIMしてもSTSTARTしないと動き出さないのでちょっと不便なところもあります。 もう一つのやり方として、SPOFSなど位置を決める命令を使うと移動アニメーション中でも止まる、SPCHRなどを使うとパターンアニメ中でも止まる、という特性を利用して止める方法もあります。 3そうだね プレイ済み2017/11/03 18:24:25に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿でんぺん DENPEN2016/1/17 17:412行目のエラーは自分で解決して欲しいぐらいの微妙なエラーですね…。よーく見てみましょう。何かがおかしいですよ。 で、他にも問題があるんですが、ひとつは DIM A$[3]は何度も呼び出すとエラーになります。なのでループの外に出すなどして何度も呼び出されないようにしましょう。 もう一つはA$[3]と宣言しているので、使えるのはA$[0],A$[1],A$[2]の3つです。 そもそもとしてこの例でなんでFORループに入れているのかわからないので、その辺も考えるといいかと思います。 色々あります、頑張ってくださいー 1そうだね プレイ済み2017/11/03 18:24:37に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿でんぺん DENPEN2016/1/17 16:22せっかくなのでもう少し丁寧に説明すると、例えばHP(ヒットポイント)、EXP(経験値)、LV(レベル)の3つの数値変数があったとして、それをセーブロードしたい場合は以下のような感じです。 DIM SV[3] '3つの変数をセーブするので3要素の配列を用意する 'セーブの場合 SV[0]=HP:SV[1]=EXP:SV[2]=LV 'セーブ内容を配列に入れる SAVE "DAT:SAVEFILE", SV '配列をセーブする 'ロードの場合 LOAD "DAT:SAVEFILE", SV, FALSE '配列変数SVに読み込む(DIMはしてあるのが前提) HP=SV[0]:EXP=SV[1]:LV=SV[2] '読み込んだ内容を変数に戻す という感じです。あとはまあ色々と試してみましょう。0そうだね プレイ済み2017/11/03 18:24:37に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿でんぺん DENPEN2016/1/17 16:10配列変数と普通の変数は違いますよ。(その辺は調べましょう。もしくは具体的に疑問があれば答えますよ) 1000のところが保存したい数字なので、そこを保存したい変数と置き換えれば大丈夫というのは正解です。 0そうだね プレイ済み2017/11/03 18:24:37に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿でんぺん DENPEN2016/1/17 16:01Dは配列変数ですね。(セーブは配列変数か文字列しか出来ないので) 1000は特別な意味はないですがセーブ内容ですね。なので実際にはセーブしたい変数とかになるんじゃないかと思いますね。0そうだね プレイ済み2017/11/03 18:24:37に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿でんぺん DENPEN2016/1/17 12:33ちなみに15〜24は、 B=ASC(B$) でも出来ます。これは文字コードの一部(英数字と一部の記号)がちょうどBGキャラ番号と一致するようになっているからです。(意図的にそう用意されていると思います) 2そうだね プレイ済み2017/11/03 18:24:31に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿でんぺん DENPEN2016/1/17 12:29消えるというのは分かりませんが、25行目で BGPUT 0, X+5,6,B とかやれば位置は変化しませんか?2そうだね プレイ済み2017/11/03 18:24:31に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿でんぺん DENPEN2016/1/17 12:26ロードは文字なら、 LOAD "TXT:SAVEFILE", FALSE OUT D$ 数値なら DIM D[1] LOAD "DAT:SAVEFILE", D, FALSE FALSEをつけたのはロード時の確認ダイアログを表示しないようにしたからで確認ダイアログを出すならTRUEか省略するかです。 配列の場合は同じものを何度も定義(DIM)するとエラーになるんでDIMをするのは始めだけです。0そうだね プレイ済み2017/11/03 18:24:37に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿でんぺん DENPEN2016/1/17 1:12文字なら、 D$="SAVEDATA" SAVE "TXT:SAVEFILE", D$ 数値なら、 DIM D[1] D[0]=1000 SAVE "DAT:SAVEFILE", D みたいな感じ。混合は出来ないので、その場合は数値を文字にしたり、文字を数値にしたりする工夫が必要です。3そうだね プレイ済み2017/11/03 18:24:37に取得
プチコン3号 SmileBASIC コミュニティ返信[26]親投稿でんぺん DENPEN2016/1/16 23:35ちょっとみむさんの発言を勘違いしないように補足すると、2次元配列の内容によってスプライトを配置する前であれば配列をSWAP SP[0,0],SP[0,1]で位置も中身も入れ替わります。(正確には中身に合わせてスプライトを配置しているので) ただ一度配置した後だと配列の中身を入れ替えたら勝手にスプライトの位置が変わるわけではないので、やっぱり自分でスプライトの位置も入れ替える必要があります。念のため〜。 2そうだね プレイ済み2017/11/03 18:24:43に取得
プチコン3号 SmileBASIC コミュニティ返信[23]親投稿でんぺん DENPEN2016/1/16 23:13すぎさんも言われているように必要な情報は揃ってそうな印象ですね〜。 SPCHRはスプライトに割り当てている絵を切り替える命令なので、スプライトの入れ替えとは異なります。SPSWAPは絵を切り替えているんじゃなくてスプライト自体の位置を変更しています。 おそらく管理番号と定義番号に絡むスプライトの仕組みを少し勘違いしているか、もしくはうろ覚えなのかなと言う印象を受けますね〜。 言われているようにSWAPで[0,0]と[0,1]を入れ替えても、その変数の中身が入れ替わるだけでスプライトとは無関係です。なのでスプライトにも反映させたかったら、その入れ替えた内容によって変更する必要があって、それが位置の入れ替えで済むのであれば僕の作ったSPSWAPでも実現出来ると思います。1そうだね プレイ済み2017/11/03 18:24:43に取得
プチコン3号 SmileBASIC コミュニティ返信[21]親投稿でんぺん DENPEN2016/1/16 22:59SWAPはもともとスプライトとは無関係の命令ですよ。そして変数の中身がスプライト番号であっても、それ自体はスプライト自体とは無関係で、自分がスプライト番号として管理している変数というだけですね。 SWAPは本来AとBの変数を入れ替えようと思ったら、 T=B:B=A:A=T のようにTという一時的な変数を利用して入れ替えなければいけないのをまとめてやってくれる便利な命令的な感じですね。 上で作ったユーザー定義命令は、ランダムで選ばれたスプライトでも使えます。SPSWAPの第1引数と第2引数の管理番号のスプライトを入れ替えるので、その番号がランダムなら出来ますよ。 作った命令は選ばれたスプライトの位置を交換するためにOUT命令で今の位置を取り出して、それを交換してからセットすることで2つのスプライトを入れ替えているわけなので。1そうだね プレイ済み2017/11/03 18:24:43に取得
プチコン3号 SmileBASIC コミュニティ返信[16]親投稿でんぺん DENPEN2016/1/16 22:19ちょっと勘違いしているみたいですね〜。 変数の中身を入れ替えてもあくまで入れ替わるのは変数の中身だけなのでスプライトとは無関係ですよ。スプライトを操作するにはSP〜(なんちゃら)系の命令を使って操作する必要があります。入れ替えをよく使うなら以下のような命令を用意して、 SPSWAP 1,2 のようにすれば管理番号1と2のスプライトの位置を入れ替える事が出来ます。 DEF SPSWAP SP1, SP2 VAR X1,Y1,X2,Y2 SPOFS SP1 OUT X1,Y1:SPOFS SP2 OUT X2,Y2 SWAP X1,X2:SWAP Y1,Y2 SPOFS SP1,X1,Y1:SPOFS SP2,X2,Y2 END 1そうだね プレイ済み2017/11/03 18:24:44に取得
プチコン3号 SmileBASIC コミュニティ返信[14]親投稿でんぺん DENPEN2016/1/16 21:19見た目が変わったら正解がすぐに分かっちゃうかとも思ったけど、見た目の違うたくさんの中から指定された正解(見た目)を見つける感じなのかな? それなら入れ替え必須ですね。始め神経衰弱みたいなのをイメージしていたので見た目の変化はないのかと勘違いしていました。 だったら始めのみむ*mimさんの例のように、変数SP1とSP2の管理番号をスプライトを入れ替えるなら、 SPOFS SP1 OUT X1,Y1:SPOFS SP2 OUT X2,Y2 SWAP X1,X2:SWAP Y1,Y2 SPOFS SP1,X1,Y1:SPOFS SP2,X2,Y2 で入れ替えられますよね。 ちなみにSPVARは必ずしも使えばいいというものでもないので説明しづらい部分もあるんですよね。そのうちなんか例でも作ってみるかなぁ…。0そうだね プレイ済み2017/11/03 18:24:44に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿でんぺん DENPEN2016/1/16 19:28僕も実務で他の言語が必要とかならその言語を覚えた方がいいですが、そうじゃないなら言語の差は気にせずに楽しいものをやればいいと思います。1そうだね プレイ済み2017/11/03 18:24:42に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿でんぺん DENPEN2016/1/16 19:23みむ*mimさんの言っているのはスプライトの見た目が変わらないのであれば実際にスプライトは入れ替えずに当たり対象となるスプライト番号を変えるだけでも実現出来るのではないか? という意味だと思います。 SPVARはスプライトに付随する自由に使える変数だと思っておけばいいと思いますが、使い道が分からない(難しい)のであれば、とりあえずは考えなくてもいいと思います。(もちろん使いこなせれば便利なのは間違えないですが)0そうだね プレイ済み2017/11/03 18:24:44に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿でんぺん DENPEN2016/1/15 17:3452行目のエラーの原因は、用意した配列の範囲外の位置を指定しているからです。 DIM SAVEDATA[1] という命令はSAVEDATAという配列を1つ用意する、という意味になります。 そして配列の位置というのは1からではなくて0からになります。スタートが1じゃなくて0というのはプログラムではよくあることなので注意しましょう。 と言うことでちゃんとした位置(インデックス番号)を指定してあげれば値も入るしエラーにならないですよ。2そうだね プレイ済み2017/11/03 18:24:50に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿でんぺん DENPEN2016/1/15 16:52ちゃんとした答えじゃないんで申し訳ないですが、とりあえず意見だけ。 まず不要な;(セミコロン)があるんで、それは消さないとエラーになっちゃいます。 あとはGOTOの飛び先が気になりますね。あまりループの必要がないところがループになっている印象です。 その辺を気をつけながらプログラムを確認してみてください。ではでは。0そうだね プレイ済み2017/11/03 18:24:50に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿でんぺん DENPEN2016/1/15 16:40誰でも始めは初心者ですしやって出来ないことはないというか出来ないと答える人はあまり居ないと思いますよ。 確かに向き不向きはありますが、それはやってみないとわからないし、やる気と根気があれば出来ると思います。ただ簡単に作れると考えていると厳しく感じるかもしれないです。勉強と同じくコツコツ地味な面が多いですから…。 ただ普通の勉強と違って自分のつけた力だがそのまま画面(ゲーム)に反映されるので、それは楽しいしモチベーションになると思うのです。 なのでゲームが作りたいなら是非頑張ってみてください!3そうだね プレイ済み2017/11/03 18:24:48に取得