マドノマグラの初心者自作ゲーム制作日誌 迷走モード
プログラミング初心者が自作ゲームを作成してみようとする動きを記す。現在迷走中。
ブログ履歴
2009/11/09: Rubyで適当版自分用関連記事リンク作成プログラムを作る
2009/06/04: Visual C++(DXライブラリ使用)の環境を整えてみるも休止状態に
2009/03/17: ActionScript勉強の環境を整えるも結局休止状態に
2006/07/15: とりあえず分岐型ゲームを作る グリーンタワーVer1.2 ダウンロード(zip)
2006/07/02: ブログスタート。NScripterで何かを作ろうとする
[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
誕生日から10億秒後の世界「初めてのプログラミング」12.2練習問題1問目
初めてのプログラミングの12.2練習問題1問目、誕生日から10億秒後の世界を考えてみる。
10億秒の計算の前に、誕生日を入れてもらう入力モードを作った。
年月日時分秒の順に入力してもらうような仕様。
ただし日の場合は、すでに入れられた年月の値によって、範囲が異なるのでこれだけ別処理にした。
あとTimeクラスを使う関係上、年は1970から入力OKとした。
ただ10億秒後の日付がいつになるかなんて、私は知らないので出力結果が正しいかどうかはわからん。
オライリー・ジャパン
売り上げランキング: 161616




シャッフル法則を追加「初めてのプログラミング」11.6練習問題3問目
初めてのプログラミングの11.6練習問題3問目、シャッフル法則の追加を考えてみる。
プレイリスト出力のシャッフル「初めてのプログラミング」11.6練習問題2問目後半戦をベースに考えることにした。
ルール確認
前回の法則に加えて、同じグループ(例えば ../aho/track00.wma だった場合は、ahoグループ)が5連続で続いた場合は、次の出力分は、なるべく同じグループをさけるように選ぶという手段をとった。
ただし、選び方はランダムで選び同じグループだった場合は再抽選。8回連続で同じグループを引き当てた場合は、次に引いたものが何であっても出力することにする。
今回、まだこの本では習っていない、array[-x]の手法と、グローバル変数 $x を手法を使用した。
そのグローバル変数は、
$LIMIT 回連続で続いた場合という部分
$RESHUFFLE_TIME 回まで再抽選するという部分
を調整できるようにするために用いた。これがいい手段なのかは知らん。
ただ問題なのは、当方の wma のファイルは、とある1グループの数が他を圧倒しているので、このシャッフルの妥当性がイマイチわからないという点である。このプログラムでいいのかは不明である。
オライリー・ジャパン
売り上げランキング: 161616




プレイリスト出力のシャッフル「初めてのプログラミング」11.6練習問題2問目後半戦
初めてのプログラミングの11.6練習問題2問目後半戦、プレイリスト出力のシャッフルを考えてみる。
音楽プレイリスト作成「初めてのプログラミング」11.6練習問題2問目前半戦と配列変化時に連続単語判定の入れ込み「初めてのプログラミング」10.3練習問題1問目リターンズ2をベースに改良…というよりは、ほとんど流用して完成させた。
オライリー・ジャパン
売り上げランキング: 161616




配列変化時に連続単語判定の入れ込み「初めてのプログラミング」10.3練習問題1問目リターンズ2
初めてのプログラミングの10.3練習問題1問目をさらに考えてみる。
shuffleの仕組みを少し変更「初めてのプログラミング」10.3練習問題1問目リターンズ1 をベースに少し改良をしてみた。
今回は、シャッフルにより、配列を入れ替えていく途中で、3連続単語でかぶる部分があるかどうかのチェックを行った。
かぶった場合は、チェックした単語とその一つ前の単語を入れ替えるという手法。これは、改良前のメソッドとほぼ同じである。
オライリー・ジャパン
売り上げランキング: 161616




shuffleの仕組みを少し変更「初めてのプログラミング」10.3練習問題1問目リターンズ1
初めてのプログラミングの10.3練習問題1問目を再び考えてみる。
「初めてのプログラミング」10.3練習問題の1問目後半戦、完全なる shuffle とは何ぞやをベースに少し改良をしてみた。
シャッフルの際、
入れた単語が1個だった場合は、そのままの配列。
入れた単語が2個だった場合は、1つ目と2つ目を入れ替え
入れた単語が3個だった場合は、まず、配列を入れ替えてからもとの配列と比較。
そのとき、もとの配列の並びの連続して3個が同じ並びだったときには、入れ替えた配列の、3連続同じ部分の2つ目と3つ目を入れ替えることで、擬似的に混ぜ合わせることにした。
ただ、これでは配列の数が増えたときに、一度配列を入れ替えるというのが無駄な手段になりそうなので、やっぱり改良の余地はありそう。
配列の1度目のシャッフルで、この3連続判定を行う必要があるだろう。
それはまた次の機会に考えることにした。
オライリー・ジャパン
売り上げランキング: 161616




音楽プレイリスト作成「初めてのプログラミング」11.6練習問題2問目前半戦
初めてのプログラミングの11.6練習問題2問目前半戦、音楽プレイリスト作成を行った。
さすがに、問題のとおり全体からファイルを探すのは時間がかかるので、マイドキュメントの音楽フォルダにあった wmaファイルを探して、playlist.m3u にテキストを出力を行うことにした。
まず、playlist0.rb では、playlist.m3u はできたのだが、このファイルを実行しても、プレイリストとして機能しない。おそらくは改行が成されないままテキストが出力されているからだろうと考えた。
次に、playlist1.rb では、テキスト出力の前に各要素ごとに改行制御文字を追加することにした。
こうしてできた playlist.m3u を実行すると、うまくプレイリストとして機能した。
オライリー・ジャパン
売り上げランキング: 161616




ファイル名リネームプログラム「初めてのプログラミング」11.6練習問題1問目
初めてのプログラミングの11.6練習問題1問目、ファイル名リネームプログラムを作ってみる。
手順としては、初めてのプログラミングのp114-115に書かれているプログラムをベースに改良を行う。
また、今回は jpgファイルではなく、テキストファイルの拡張子を強引に unko にして、unko ファイルの移動を行うようにする。
そして、移動先に同名のファイルがあった場合には、その同名ファイルの移動前に強制終了する仕組みにした。
通常の実行も、同名ファイルがあったときの実行も行い、うまくいった。
オライリー・ジャパン
売り上げランキング: 161616




99本のビール再び「初めてのプログラミング」10.5追加練習問題4問目
初めてのプログラミングの10.5追加練習問題4問目、99本のビールの歌を english_number メソッドを用いて表示を行う。
さらに拡張しそうです…「初めてのプログラミング」10.5追加練習問題2問目 と「初めてのプログラミング」練習問題7.5の1問目を考えてみたのプログラムを利用することにする。
english_number メソッド で数値を英語表記
beerbottle メソッド で数値から、Bottle かBottles にするのかを決定 (0の場合はNo Bottles)
songs メソッド で 実際の歌の表示
を行うことにした。
また、英語での数字の先頭を大文字にするため .capitalize を用いた。
オライリー・ジャパン
売り上げランキング: 161616




wedding_numberの恐怖「初めてのプログラミング」10.5追加練習問題3問目
初めてのプログラミングの10.5追加練習問題3問目、wedding_numberの表示を行う。
さらに拡張しそうです…「初めてのプログラミング」10.5追加練習問題2問目で書いたプログラムに追加修正を行う方針。
方針としては、つなぎ部分を" and "にしてみる。これだけで万事解決…たまたまだけれども。
オライリー・ジャパン
売り上げランキング: 161616




さらに拡張しそうです…「初めてのプログラミング」10.5追加練習問題2問目
初めてのプログラミングの10.5追加練習問題2問目、位処理の拡張のである。
「初めてのプログラミング」10.5追加練習問題1問目、千の追加になって で書いたプログラムに追加修正を行う方針。
方針としては、各位の値を割り算して行くやり方をとっていきたい。そこでは繰り返しが生じるので、
[1_000_000_000_000," trillion"]
[1_000_000_000," billion"]
[1_000_000," million"]
[1_000," thousand"]]
という配列を作って、.eachイテレータ作戦を用いていくことにした。
以上のことを考慮して作成、実行し、うまくいった。
オライリー・ジャパン
売り上げランキング: 161616



