0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ヒット&ブローゲーム

Last updated at Posted at 2019-08-29

#はじめに
初めまして!
奏詩と申します。
基本的には自分用のメモや後々の見返しのために記事書いてます。

軽く自己紹介しますね٩(ˊᗜˋ*)و

奏詩(そうし)

1998年生まれの魚座。
学歴は高校(文系)卒。
フリーター⇨営業⇨起業⇨失敗⇨SESで全くプログラミング未経験ながら働き始める⇦イマココ
ゲーム大好き。FPS、RPG、シミュレーションなんでもやる。
Macをスタバで開くのが好き。何もできない。

###僕と近い境遇をもつあなたに
この記事はプログラミング未経験者(趣味で触っている)とかプログラミング初心者(学校で触っていた)などの触った経験はあるけど実務をやったことがないなんて言うエセ初心者(ごめんなさい)じゃなく、本当に触ったこともない勉強もしたことがない、じゃば?何それおいしいの?ってレベルの方達がプログラミングを勉強する後押しになればなと思って書いています。

####ここからが本題
今回は初投稿なので昨日ぐらいにやっと終わった本の写経を載せたいと思います。
作成したのはヒット&ブローゲーム、ランダムな4つの数字を当てるゲームです。
自分自身書いていて半分ぐらいしか理解できてないです。

# Python3
import random
import tkinter as tk
import tkinter.messagebox as tmsg

# ボタンがクリックされたときの処理
def ButtonClick():
    # テキスト入力欄に入力された文字列を取得
    b = editbox1.get()

    # Lesson 5-4のプログラムから判定部分を借用
    # 4桁の数字かどうかを判定する

    isok = False
    if len(b) != 4:
        tmsg.showerror("エラー","4桁の数字ではありません")
    else:
        kazuok = True
        for i in range(4):
            if (b[i] < "0") or (b[i] > "9"):
                tmsg.showerror("エラー","数字ではありません")
                kazuok = False
                break
        if kazuok:
            isok = True

    if isok:
        #4桁の数字であったとき
        #ヒットを判定
        hit = 0
        for i in range(4):
            if a[i] == int(b[i]):
                hit = hit + 1

        #ブローを判定
        blow = 0
        for j in range(4):
            for i in range(4):
                if (int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[j] != int(b[j])):
                    blow = blow + 1
                    break
        # ヒットが4つなら当たりで終了
        if hit == 4:
            tmsg.showinfo("当たり","おめでとうございます!あたりです!")
            # 終了
            root.destroy()
        else:
            #ヒット数とブロー数を表示
            rirekibox.insert(tk.END, b + " /H:" + str(hit) + " B:" + str(blow) + "\n")

# ランダムな4つの整数を作る
a = [random.randint(0,9),
     random.randint(0,9),
     random.randint(0,9),
     random.randint(0,9)]

#テストのために表示させる
print(str(a[0]) + str(a[1]) + str(a[2]) + str(a[3]))
    
# ウィンドウを作る
root = tk.Tk()
root.geometry("600x400")
root.title("hit&blowゲーム")

#履歴表示のテキストボックスを作る
rirekibox = tk.Text(root, font=("Helvetica" , 14))
rirekibox.place(x = 400 , y = 0 , width = 200 , height = 400)

# ラベルを作る
labell = tk.Label(root, text = "数を入力してね", font=("Helvetica",14))
labell.place(x = 20, y = 20)

# テキストボックスを作る
editbox1 = tk.Entry(width = 4, font=("Helvetica", 28))
editbox1.place(x = 120, y = 60)

# ボタンを作る
button1 = tk.Button(root, text = "チェック", font=("Helvetica",14), command=ButtonClick)
button1.place(x = 220, y = 60)

# ウィンドウを表示する
root.mainloop()    

これでやっと画面上にゲーム画面を出すことができました。
Progate⇨本と勉強してこのレベルです。鼻くそです。

######本当の初心者の方に
最初はコマンドプロンプトに慣れるところからです。文字だけの画面を見て寝ないように頑張りましょう。
僕はたまたま最初にLinuxを使う現場に回されたのでひたすらカタカタしてました。(めっちゃ寝ました)

転職で未経験からエンジニアになろうとしてる方、SESに転職したけど事務みたいなことしかさせてもらえない方、一緒に頑張りましょう。諦めず地道に自分で勉強して「エンジニア」目指しましょう!

#終わりに
今はなぜか業務でCobolを触っていますが(なんで?),将来のためにPythonを勉強してます。
今後また作ったものを上げていくかもしれないので応援してもらえるとやる気も上がります。(助けてください。)

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?