前提・実現したいこと
使用バージョン:Python 3.8.1, sqlite3 3.30.1
ゲームのダメージ計算機をパイソンの中で作成したく思い、作ろうとしています。
この中で実際にダメージを計算する部分を作っています。
発生している問題・エラーメッセージ
エラーメッセージはなく、何も出力されません。
print()を使って出力させているのですが、コンソールに表示がありません。
該当のソースコード
Python
1def click(): 2 3 A = a.get() 4 B = b.get() 5 C = c.get() 6 7 cur.execute("SELECT A FROM dex WHERE Name = '%s'" % A) 8 Atk = cur.fetchone() 9 10 cur.execute("SELECT C FROM dex WHERE Name = '%s'" % A) 11 SpA = cur.fetchone() 12 13 cur.execute("SELECT type1 FROM dex WHERE Name = '%s'" % A) 14 type1 = cur.fetchone() 15 16 cur.execute("SELECT type2 FROM dex WHERE Name = '%s'" % A) 17 type2 = cur.fetchone() 18 19 cur.execute("SELECT type FROM moves WHERE name = '%s'" % B) 20 mtype = cur.fetchone() 21 22 cur.execute("SELECT B FROM dex WHERE Name = '%s'" % C) 23 Def = cur.fetchone() 24 25 cur.execute("SELECT D FROM dex WHERE Name = '%s'" % C) 26 SpD = cur.fetchone() 27 28 cur.execute("SELECT power FROM moves WHERE name = '%s'" % B) 29 Power = cur.fetchone() 30 31 cur.execute("SELECT mtype FROM moves WHERE name = '%s'" % B) 32 mAtktype = cur.fetchone() 33 34 if type1 == mtype: 35 36 mAtk = 1.5 37 38 elif type2 == mtype: 39 40 mAtk = 1.5 41 42 else: 43 44 mAtk = 1.0 45 46 bin = tk.BooleanVar() 47 48 if bin.get(): 49 50 range_rev = 0.75 51 52 else: 53 54 range_rev = 1.0 55 56 if mAtktype == A: 57 58 dmg = int(int(22 * Power[0] * Atk / Def) / 50 + 2) * range_rev * mAtk 59 60 print(dmg) 61 62 elif mAtktype == C: 63 64 dmg = int(int(22 * Power[0] * SpA / SpD) / 50 + 2) * range_rev * mAtk 65 66 print(dmg)
試したこと
global dmgとして、def clickの最後にprint()を実行しましたが、当然ながら"referenced before assignment"、定義がなされていないというエラーメッセージが出ました。
回答2件
あなたの回答
tips
プレビュー