私は自分のスキルをPythonで構築しようとしており、リスクスタイルのゲームを作成しようとしています。Tkinterで危険なスタイルのゲームを構築しようとしています
私はクラスとTkinterを手に入れようとしているので、今はそれほど遠くはありません。
私の最初の試行は、異なる国の代わりになる一連のボタンを作成することです。私は、これらのボタンをクリックして国の軍隊の数を更新したいと思っています。
これまで私が作成したクラスから生成するマップを取得することができ、ボタンはクリック可能です。ボタンをクリックすると、軍隊の数は更新されますが、常に最後のボタンが更新されます。
ボタンをクリックして最新のものではなく最新のものをクリックするようにするにはどうすればよいですか?
私は完全に間違った方法でこれを行ったことがありますか?このように
Button(window, text=territories[0].current_armies,... command=click1(territories, 0)...
、あなたは常にあなたの参考として最初の領土を使用しているので、あなたがそので、各領土を初期化するべきである:あなたのdef button(self):...
あなたは常にterritories[0]
を参照しているに
from tkinter import *
import random
class territory:
def __init__ (self, country, player = "1", current_armies = 0, x=0, y=0):
self.country = country
self.current_armies = current_armies
self.player = player
self.y = y
self.x = x
def get_armies(self):
print(self.country + " has " + str(self.current_armies)+ " armies.")
def add_armies (self, armies):
self.current_armies += armies
def roll_dice (self, dice=1):
rolls = []
for i in range(0, dice):
rolls.append(random.randint(1,6))
rolls.sort()
rolls.reverse()
print (self.country + " has rolled " + str(rolls))
return rolls
def owner(self):
print (self.country + " is owned by " + self.player)
def get_country(self):
print(country)
def button (self):
Button(window, text = territories[0].current_armies, width = 10, command = click1(territories, 0)).grid(row=y,column=x)
window = Tk()
def create_territories():
countries = ["UK", "GER", "SPA", "RUS"]
terr_pos = [[1,0],[2,0],[1,5],[4,1]]
sta_arm = [1,1,1,1]
terr = []
player = "1"
for i in range(len(countries)):
terr.append(territory(countries[i],player, sta_arm [i] , terr_pos[i][0],terr_pos[i][1]))
if player == "1":
player = "2"
else:
player = "1"
return terr
def click1(territory, i):
territory[i].current_armies += 1
build_board(territory)
def build_board(territories):
for i in range(0,4):
Button(window, text = territories[i].country+"\n"+str(territories[i].current_armies), width = 10, command = lambda: click1(territories, i)).grid(row=territories[i].y,column=territories[i].x)
territories = create_territories()
window.title ("Domination")
create_territories()
build_board(territories)
window.mainloop()