見出し画像

○✕ゲームを作ってみよう ! with Python3 ①

みなさんこんにちは、metchです🌻🍓🧡
今回は○✕ゲームを作ってみたいと思います✨

はじめてプログラミングに触れる人でも
簡単に作れるように、
分かりやすく解説を付けていきたいと思います。

何かわからないことがあったら、
ぜひコメントで質問してください!

○✕ゲームとは?

2人で対戦するゲームです。
別名「三目並べ」とも言います。

3×3の盤面を用意し、
先攻の人は好きなマス目に「〇」を書きます。

後攻の人は空いているマス目に
を書きます。

先攻、後攻、交互に空いている好きなマス目に
自分のマークを埋めます。

自分のマークが先に3つ並べることができたら、
「勝ち」です。

○の勝ち


先攻、後攻どちらも
3つ並べることができなければ
「引き分け」
となります。

引き分け

○✕ゲームの流れ

ゲームを作るために必要な機能を考えるために、
○✕ゲームの手順を整理してみましょう。

  1. 3×3の盤面を表示する

  2. ○を書く位置を入力させ、盤面に反映する

  3. 盤面を表示する

  4. 勝利判定をする

  5. ✕を書く位置を入力させ、盤面に反映する

  6. 盤面を表示する

  7. 勝利判定をする

今回の○✕ゲームでは上に書いた手順に沿って、
プログラムを作成したいと思います。

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のマスだけが表示されていることになります。

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文

が含まれています。

興味がある人は、
それぞれの用語について調べてみるとより、
理解が深まると思います✨
何かわからないことがあったら
コメントで教えてください!

ここまで読んでいただき、
ありがとうございます!
少しでも参考になったら 
♡(スキ)やフォローよろしくお願いします。

次の記事はこちら



この記事が参加している募集

自己紹介

スキしてみて

この記事が気に入ったらサポートをしてみませんか?