読者です 読者をやめる 読者になる 読者になる

みなくんの日記

やる気が皆無で自由気ままに生きてる人のブログ

プログラムよ、とにかく動け ~4桁のヒット&ブローゲーム「4Numbers」を作ろう~その0

待望のプログラミング講座です

誰も待ってないし、少なくとも教えられるほどの腕はありません。ごめんなさい。

目立ったバグもなく動けば合格、とりあえずそれを目標に行う私のプログラミングですが、せっかくなのでここで備忘録的な感じで残していくことにしました。

アルゴリズムがデタラメだったり、オーダがO(n^2)だったりして滅茶苦茶なことが多く、「これ時間処理も何も考えてないだろ」ってプログラムを平気で書いてる奴なので、たくさん改善点はあると思いますが…。(優しく教えてくれる人募集中)

全何回になるか分からない上に更新頻度も謎です。ご了承ください。

プロローグ Pythonで簡単なゲームを作成してみたい

上にある通り、最近私の中でプチブームになっている「Python」言語を用いて今回はプログラミングしていきます。ちなみに、これ以外に私が触ったことがあるのは「アセンブリ言語」「C言語」「Java言語」「C#言語」なのですが、個人的に一番しっくりきたというか、興味が湧いたのがこの「Python」でした。でもヘビは嫌いです。大嫌い。

今回作成するゲームというのは、「ヒットアンドブロー」。皆さんはご存知でしょうか。私はこのゲームが実は大好きで、暇な時間にやっていることもあります。地味な頭の体操になる…らしいです。無意識にやってるので正直そんな感覚は一切ないですが。

ルールは以下の通りです。このゲームのルールはそこそこで違うみたいなので、一応オリジナルルールということで。

・4桁の答えとなる数字が設定される。その4桁は0から始まっても良いが、数字の重複をしてはいけない。(例えば0123)

・プレイヤーは正解と思う4桁の数字を提示する。こちらも数字の重複をしてはいけない。(例えば0267)

・答えと正解を以下の基準で比較する。

 (1)正解とプレイヤーの答えが完全一致の場合、正解となる。(例では[0123][0267]で一致しないため不正解)

 (2)正解とプレイヤーの答えが一致している桁(例では[0]がそれに該当)を「ヒット」とする。

 (3)プレイヤーの答えに、「正解の数字ではあるが桁が違う」という数字があった場合(例では[2]がそれに該当)を「ブロー」とする。

・不正解であったなら、「ヒット数・ブロー数」をヒントとしてプレイヤーに教え、再挑戦させる。(例では[1Hit 1blow]となる)

・正解するまで再挑戦でき、正解したらゲームは終了。正解までにかかった時間、およびトライ数が表示される。より短い時間で、試行回数が少ない方が良い、という感じ。

 

要するに数あてゲームです。当たるまでの時間と手数が短い方がベスト。今回はこのゲームを作っていきます。名付けて「4Numbers」。(実はアプリに同じ名前があるのですが、パクリスペクトです。許して)

 

というわけで、このゲームのプログラムを早速作成…といきたいのですが、何事も段階を踏むことが大切。今回はプロローグ、ということで、「こんなゲームを作るよ」という予告程度に留め、次回から本格的に入っていこうと思います。次回はどのような動作をするゲームなのかを考え、それに合わせた「どのような処理を行うのか」ということを考える段階からスタートする予定です。

今回はここまで。また次回お会いしましょう!

 

おまけ

おまけというか余談ですが、実は2年程前にこのゲームをC言語で作っています。初心者のくせにいきなりそんなプログラム組むから、それはもうとんでもない労力と時間を使いましたが、長期休暇を使って仕上げたのはいい思い出です。よかったら遊んでみてください。ただ、色々バグが残ってるので…動作が安定するかどうかは分かりません。(一部から「ウイルスの疑いがある」と警告されると言われましたが、ウイルスを入れられるほど高度な技術は持っていないので安心してください。)

あと、1桁ずつ入れなければいけない、という特殊な入力の仕方になります。複数桁入れても変な答えになるだけなのでお気をつけて。

 

ダウンロードはこちら(Windowsのみ対応、Win10動作確認済み[Dropboxで開きます])

ダウンロード配布は終了しました。ご了承ください。(2017/5/18追記)