○✕ゲームを作ってみよう ! with Python3 ①
みなさんこんにちは、metchです🌻🍓🧡
今回は○✕ゲームを作ってみたいと思います✨
はじめてプログラミングに触れる人でも
簡単に作れるように、
分かりやすく解説を付けていきたいと思います。
何かわからないことがあったら、
ぜひコメントで質問してください!
○✕ゲームとは?
2人で対戦するゲームです。
別名「三目並べ」とも言います。
3×3の盤面を用意し、
先攻の人は好きなマス目に「〇」を書きます。
後攻の人は空いているマス目に
「✖」を書きます。
先攻、後攻、交互に空いている好きなマス目に
自分のマークを埋めます。
自分のマークが先に3つ並べることができたら、
「勝ち」です。
先攻、後攻どちらも
3つ並べることができなければ、
「引き分け」となります。
○✕ゲームの流れ
ゲームを作るために必要な機能を考えるために、
○✕ゲームの手順を整理してみましょう。
3×3の盤面を表示する
○を書く位置を入力させ、盤面に反映する
盤面を表示する
勝利判定をする
✕を書く位置を入力させ、盤面に反映する
盤面を表示する
勝利判定をする
今回の○✕ゲームでは上に書いた手順に沿って、
プログラムを作成したいと思います。
Pythonを開いてみよう!
Python の開き方や、使い方がわからない人は
こちらの記事を参考に
新しいファイルを作成してください。
今回作成する○✕ゲームは、
シェルウィンドウで実行される
CUIのゲームとなっています。
1.3×3の 盤面を表示する
ゲームに必要なマス目を用意しよう
まずはゲームに必要な9マスを用意し、
マス目に番号を振っていきましょう。
実際にpythonで盤面を用意するには、
gameboard=[1,2,3,4,5,6,7,8,9]
と記述します。
まずは1のマス目を表示するために
print (gameboard[0])と記述しましょう。
gameboard=[1,2,3,4,5,6,7,8,9]
print (gameboard[0])
記述できたらプログラムを実行してみます。
Pythonのプログラムを実行する方法は
覚えていますか?
エディターウィンドウを選択している状態で
F5キーを押してみて下さい!
実行できると、シェルウィンドウに
1
と表示されます。
図で表すと、こんなイメージ。
今の状態だと、
1のマスだけが表示されていることになります。
3×3の盤面を表示したいので、
他のマスも表示してみましょう!
print (gameboard[0])と記述することで、
1のマスを表示することができました。
2のマスを表示するためには
どのように記述したらいいでしょうか?
#の場所に
print (gameboard[1])
を追記してみてください。
#はPythonのプログラムにコメントを
残したいときに使用します。
書いても書かなくても問題なく動きます。
gamebord=[1,2,3,4,5,6,7,8,9]
print (gameboard[0])
print (gameboard[1]) #ここだけ追加
なぜ1のマスを表示するのに [0] を使うか
疑問に思いませんか?
気になった人は別の記事を読んでみてください!
今のところは
表示したいマスの数字 -1
をすると、
そのマスが表示できると思ってもらって問題ないです。
2のマスが表示できたので
次は3のマス、4のマス・・・と
9マスすべてを表示するために、
わざわざ同じようなコードを何行も書くのはとても大変ですね。
似たようなコードをかくときは
for文を使用しましょう。
下のコードを真似して、
プログラムを変更してみてください。
gameboard=[1,2,3,4,5,6,7,8,9]
for i in range(0,len(gameboard)):
print (gameboard[i])
実行すると・・・
シェルウィンドウに1から9までの数字が表示されます。
このままだと9つのマス目を表示することはできても、
3×3の盤面は表示することができていません。
どうしたら3×3の盤面を表示できるでしょうか?
3、6、9が書かれたマスで改行し、
表示することができれば
3×3の盤面を表示することができます。
🌻🍓🧡めちクイズ🧡🍓🌻
3、6、9のマスは
gameboard[①]、gameboard[②]、gameboard[③]を
printすることで表示することができます。
①、②、③に入る数字を考えてみてください
予想できましたか?
🌻🍓🧡めちクイズの答え🧡🍓🌻
3、6、9のマスは
gameboard[2]、
gameboard[5]、
gameboard[8]
を print することで表示することができます。
つまり、
gameboard [ i ]の i が2,5,8のとき
改行することができれば
3×3の盤面を表示することができます。
2、5、8の3つの数字にはどのような関係があるでしょか?
今回作成したい盤面に使われている
「3」という数字をもとに考えてみましょう。
2を3で割ると0あまり2
5を3で割ると1あまり2
8を3で割ると2あまり2
実は3つの数字はすべて3で割ると余りが2になる数字だったのです。
3×3の盤面を表示しよう
では、この条件をつかって
3×3の盤面を作成していきましょう。
もし、iを3で割ったとき余りが2になるときは改行を行い、
それ以外のときは改行しないようなプログラムを作成します。
割ったときのあまりを求めるためには % を使います。
改行をするときは
print (gameboard[i])を使い、
改行しないときは
print (gameboard[i] , end = "")を使います。
gameboard=[1,2,3,4,5,6,7,8,9]
for i in range(0,len(gameboard)):
if(i%3 == 2): #iを3で割ったときの余りが2のとき
print(gameboard[i]) #改行して表示
else :
print(gameboard[i], end="") #改行しないで表示
実行すると、
123
456
789
と表示されましたか?
これで3×3の盤面を表示するためのプログラムが完成しました。
次回は、
2. ○を書く位置を入力させ、盤面に反映する
3. 盤面を表示する
プログラムを作成します。
今回作成したプログラムには、
リスト
for文
if文
が含まれています。
興味がある人は、
それぞれの用語について調べてみるとより、
理解が深まると思います✨
何かわからないことがあったら
コメントで教えてください!
ここまで読んでいただき、
ありがとうございます!
少しでも参考になったら
♡(スキ)やフォローよろしくお願いします。
次の記事はこちら