プチコン3号&BIGまとめWiki

ハイスコアの保存方法

パンくずリスト

自己紹介

どうも、キャラクター製作所ですo(^-^)o

今回は、豆知識ということで、まだあんまりないハイスコアが保存されるゲームの作り方を紹介します。

今日は、1人、これまでに、7079人
ご覧いただき誠にありがとうございます(v^-゚)

mk2で言うMEMリソースの変わり

プチコンでついにTXTリソースができました!とゆうことで、

  1. ハイスコア(数値)をTXTに変換する方法
  2. TXTのセーブとロードの方法

大きく分けてこの二つを説明したいと思います。

STR$関数

この関数を使うと数値を文字列(TXT)として扱うことができます。

  1. ?18782*2
  2. ?STR$(18782)*2

多分このような結果になったと思います。

  1. 37564
  2. 1878218782

数字の場合 18782*2 = 18782+18782 = 37564

文字列の場合 "18782"*2 = "18782"+"18782" = "1878218782"

と、なるので、

これで多分、文字列に変換できたことがなんとなくでもわかったと思います。

選択肢 投票
わかりました 140  
わかりません 83  

TXTの保存

ハイスコアを文字列に変換出来たので、保存してみましょう。

  1. SAVE”TXT:TESTHI”,STR$(18782)

そうしたら「作品を見る」→デフォルトに設定しているプロジェクトに TESTHIというファイルができているはずです。(ABCのアイコン)

開いて見ると・・・エラーが起こるのでEDITボタンを押してください

  1. 18782

となっているはずです。

これでなんとなくでも保存できたことがわかると思います。

選択肢 投票
わかりました 28  
わかりません 14  

TXTの読み込み

  1. LOAD ”TXT:TESTHI” OUT HI$
  2. ?HI$

↓結果

  1. 18782

これで読み込めたことがわかると思います。

選択肢 投票
わかりました 14  
わかりません 8  

VAL関数

表示だけなら問題ありませんが、このままだと、ハイスコアを更新したかの判断をIF文で行うことが出来ません。

そこで、VAL関数で、数値に戻します。

  1. LOAD ”TXT:TESTHI” OUT HI$
  2. ?VAL(HI$)*2
  3. ?HI$*2
  1. 37564
  2. 1878218782

わかりますね?

選択肢 投票
わかりました 16  
わかりません 8  

コメント欄

荒らしは"やあ、荒らし(・ω・)"に適当に置き換えます。

  • 魔神 : 頑張ってください (2014/12/01 (月) 21:47:47)
  • 名無しさん : 楽しみ‼︎‼︎ (2014/12/01 (月) 22:13:25)
  • キャラクター製作所 : あれ?何かもうコメントきてるww (2014/12/01 (月) 22:29:50)
  • 名無しさん : STR$関数の説明で"STR$(18782)*2"について説明があった方がいいと思います。 (2014/12/02 (火) 07:30:16)
  • 名無しさん : STR$関数で文字列に変換されたため文字列に"*2"の演算をすると文字列の内容が2回繰り返されるとか説明があったらいいかなと思いました。 (2014/12/02 (火) 07:33:20)
  • キャラクター製作所 : はい、追加しますね^^それと、もしよければ、勝手に付け足してもいいですよ。その際はコメントで教えてください。「何々を追加しました。」程度でいいです。 (2014/12/03 (水) 20:15:54)
  • 三毛乱ジェロ : 実はこれだけだとちょっとした問題が・・・ハイスコアは「4桁でも5桁でも」 (2014/12/07 (日) 21:27:26)
  • 三毛乱ジェロ : 途中送信したので続き。「4桁でも5桁でも数字としてあり得ますが、STRだとその桁数しか保存できないので解凍が困難」ってのがあります。さてそういう場合どうしたらいいでしょうか(答えは分かってますがあえて書かない私) (2014/12/07 (日) 21:29:26)
  • 三毛乱ジェロ : つまり「1234点と56789点を保存して解凍する時にどこで区切ればいいのかプログラムでは分からない」という事です。 (2014/12/07 (日) 21:31:08)
  • キャラクター製作所 : うーん(゚-゚)何のことを言っているのかわかりません・・・( TДT)ゴメンヨー (2014/12/08 (月) 14:53:40)
  • キャラクター製作所 : もしかして、「1234点と56789点を両方保存する」って事ですか?その方法は、「初心者には、難しいかなぁ。」なんて思ったので、書いてません。 (2014/12/08 (月) 14:57:25)
  • キャラクター製作所 : ここに書いてあるのは、一つのハイスコアを保存する方法だけです。何か生意気ですいません。(。-人-。) (2014/12/08 (月) 14:59:09)
  • 三毛乱ジェロ : なるほど、そりゃ失礼。 (2014/12/08 (月) 23:48:18)
  • くぉくぉくぉ : 最大の桁数(ここでは6桁)を決めて「001234056789」で保存。解凍する際6桁で取り出して、左から「0」以外が出るまで「0」を省き続けて、そのあとVAL()で数値に戻すってことですかね (2014/12/09 (火) 00:03:46)
  • くぉくぉくぉ : 分かりにくいですね。すいませんm(_ _)m (2014/12/09 (火) 00:04:26)
  • 名無しさん : ↑↑初心者だけど、結構分かり易かったよ (2014/12/09 (火) 00:09:40)
  • 三毛乱ジェロ : いや、001234でもVALにすると1234になりますよ。むしろ「どうやって0を継ぎ足して6桁に固定すればいいのか」を考える方が(答えは分かってますがまだ書かない (2014/12/09 (火) 00:12:44)
  • くぉくぉくぉ : たしか文字数を出す関数があったような。それを使えば6桁に達するまでに必要な「0」の数が分かるということでしょうか (2014/12/09 (火) 00:16:50)
  • 三毛乱ジェロ : もっともっとシンプルに行きましょう。ちなみに文字数を出す関数はLEN()です (2014/12/09 (火) 00:25:58)
  • 三毛乱ジェロ : 勿体付けるのもアレですので私なりの回答。TXT$=RIGHT$("000000"+STR$(HI),6) これでHIが1234であると設定して「0を6つ足して0000001234→RIGHT$で右から6つだけ拾うので001234」になりますよ。皆さんはどんな風に考えてました? (2014/12/09 (火) 00:30:14)
  • くぉくぉくぉ : あぁ!確かにそうですね!!これはかなりシンプルだけど思いつかなかったな… (2014/12/09 (火) 00:33:07)
  • キャラクター製作所 : 僕mk2の時から知ってたんだし、やっぱり暇なときに分かりやすいように頑張って書いてみる。あぁ、また生意気です。すいません。m(_ _)m (2014/12/09 (火) 00:52:07)
  • 名無しさん : つFORMAT$ (2014/12/09 (火) 03:13:38)
  • キャラクター製作所 : こ、、これは!!!Σ(ノ°▽°)ノΣ(ノ°▽°)ノΣ(ノ°▽°)ノΣ(ノ°▽°)ノΣ(ノ°▽°)ノ (2014/12/09 (火) 15:39:58)
  • 名無しさん : HEXで桁揃えって案外知られていない? (2014/12/09 (火) 16:41:37)
  • 名無しさん : HEX$(HI,5)で文字列化してVAL("&H"+MID$(HI$,0,5))で数値化 (2014/12/09 (火) 16:44:06)
  • 初心者 : VAL関数がよくわかりません。 (2014/12/21 (日) 12:01:15)
  • 名無しさん : S$="100"としてS$×2は"100"×2で"100100"だけどVAL(S$)×2だと100×2で200になる (2014/12/21 (日) 12:22:04)
  • 名無しさん : そこじゃなくてVAL関数自体を聞いているのでは (2014/12/21 (日) 13:51:48)
  • 名無しさん : 文字列を数値に戻す関数、という説明でいいかな。 (2014/12/21 (日) 15:23:24)
  • 名無しさん : 文字列を改行で区切って配列で返す命令(jsのString.split("\n"))を作ればできるんじゃね (2015/01/05 (月) 13:01:45)
  • Newキャラクター製作所 : 「わからない」と、答えた人が意外と多い・・・。何かわからないことがあったら、気軽に質問してください♪ (2015/01/09 (金) 21:15:50)
  • 猫姫 : 3号は配列変数をDATファイルで保存できるので、例えば、HISCORE(I)って配列に入れれば、文字列変換使わず保存できますよ。詳しくはSAVEのヘルプ4ページ目だったかな。 (2015/01/22 (木) 08:31:22)
  • Newきゃらくたぁ製作所 : あ、そうだ、DAT使えば、ランキングごと保存するのも楽に出来る・・・! (2015/01/24 (土) 13:51:13)
  • 名無しさん : プチコンの使用上ロードにいちいち確認でるからハイスコアは実装しないほうがいいのかもしれない (2015/01/27 (火) 21:01:16)
  • 名無しさん : セーブの間違いでは (2015/01/27 (火) 21:39:03)
  • TEXTER : 21:01の名無しさん>>LOADでは、読み出すファイル名の後に「,FALSE」を追加する事で確認ダイアログが表示されなくなります。SAVEではできません。 (2015/02/04 (水) 23:59:46)
  • ゴースト4 : DATってどうやる? (2015/05/20 (水) 23:37:37)
  • Newきゃらくたぁ製作所 : あー。DAT版のハイスコアの保存方法のページも作ろうかとは思ってるんですけど、忙しくてなかなか時間が・・・。 (2015/07/19 (日) 12:04:28)
  • イェァ : 複数の数字を保存する時、MID$で特定の記号を取得してるのは俺だけ? (2015/07/30 (木) 16:27:28)
    • 天郷思音 : 桁数が少ないときデータが小さいってメリットがある。てかINSTRが便利。 (2015/07/30 (木) 17:16:37)
  • §1 : やあ、荒らし(・ω・) (2015/10/10 (土) 03:49:06)
  • ぷちぷち : 18782・・・ 37564・・・ これは・・・  あ、とても分かりやすかったです! (2015/11/19 (木) 17:31:24)
  • Newきゃらくたぁ製作所 : ぷちぷちさん»計算機のテストはまずこの計算っていうw (2016/01/24 (日) 20:33:04)
  • 名無しさん : なるほど、18782(いやなやつ)、37564(わかるよね)か。 (2021/03/28 (日) 15:47:10)
  • 名無しさん : 1234/214/2341 みたいにデータごとに記号で区切って、ロードするときは左から文字を一つづつ取っていくっていうゴリ押しでやってる(これだと最大桁数とか気にしなくていいので) (2021/03/30 (火) 00:36:43)

メニュー 【3号】

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 4 人がこのサイトを見ています
  • このページはこれまでに 7079 回、本日は 1 回、昨日は 1 回閲覧されました

ページの先頭に戻る

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.054 秒 | このページの最終更新 : 2021/03/30 (火) 00:36:43 (21d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30