2016-03-23 3 views
1

私はMastermindゲームをデザインしようとしていますが、ボタンが押されるたびに色が変わり、与えられたものを繰り返して、定義された後に円の色を変更する方法が見つからないようです色のリスト。私はまた、後で使用するリスト内にこれらの色を保存し、正しい色のリストと比較する方法を探しています。PythonでTkinterを使用して、ボタンの押下ごとに変更される、いくつかの選択された色の反復を使用して、Pythonで円色を変更する方法は?

import Tkinter as tk 
import Tkinter 
import math 
import random 
from Tkinter import * 

class ResizingCanvas(Canvas): 
    def __init__(self,parent,**kwargs): 
     Canvas.__init__(self,parent,**kwargs) 
     self.bind("<Configure>", self.on_resize) 
     self.height = self.winfo_reqheight() 
     self.width = self.winfo_reqwidth() 

    def on_resize(self,event): 
     wscale = float(event.width)/self.width 
     hscale = float(event.height)/self.height 
     self.width = event.width 
     self.height = event.height 
     self.config(width=self.width, height=self.height) 
     self.scale("all",0,0,wscale,hscale) 

def main(): 

    root = Tk() 

    myframe = Frame(root) 
    myframe.pack(fill=BOTH, expand=YES) 
    mycanvas = ResizingCanvas(myframe,width=300, height=425, highlightthickness=0) 
    mycanvas.pack(fill=BOTH, expand=YES) 


    root.title('MasterMind!') 

    dash_seperation_line = mycanvas.create_line(195,350,195,35, dash =(3,5)) 

    top_line = mycanvas.create_line(0,35,300,35) 

    blue_layer = mycanvas.create_rectangle(0,425,425,325,fill = 'blue') 

    title_text = mycanvas.create_text(150,15,text='MasterMind!') 

    colors = ['red','green','blue'] 


    #Trying to cycle through these given colors 
    color_iteration = color=itertools.cycle(('blue', 'green', 'orange', 'red', 'yellow')) 

    circles_list1 = [] 
    circles_list2 = [] 
    circles_list3 = [] 
    circles_list4 = [] 
    circles_list5 = [] 
    circles_list6 = [] 

    rectangles_list1 = [] 
    rectangles_list2 = [] 
    rectangles_list3 = [] 
    rectangles_list4 = [] 
    rectangles_list5 = [] 
    rectangles_list6 = [] 

    random_pick1 = random.choice(colors) 
    random_pick2 = random.choice(colors) 
    random_pick3= random.choice(colors) 
    random_pick4 = random.choice(colors) 

    answer_key = [random_pick4,random_pick3,random_pick2,random_pick1] 

    r = 10 
    x = 300 
    y = 300 

    #CIRCLES*** 
    for x in range(30,220,48): 
     y = 50 
     circle1 = mycanvas.create_oval(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     circles_list1.append(circle1) 
    c1_1 =mycanvas.itemconfig(circles_list1[0]) 
    c2_1 =mycanvas.itemconfig(circles_list1[1]) 
    c3_1 =mycanvas.itemconfig(circles_list1[2]) 
    c4_1 =mycanvas.itemconfig(circles_list1[3]) 


    for x in range(30,220,48): 
     y = 100 
     circle2 = mycanvas.create_oval(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     circles_list2.append(circle2) 
    c1_2 =mycanvas.itemconfig(circles_list2[0]) 
    c2_2 =mycanvas.itemconfig(circles_list2[1]) 
    c3_2 =mycanvas.itemconfig(circles_list2[2]) 
    c4_2 =mycanvas.itemconfig(circles_list2[3]) 

    for x in range(30,220,48): 
     y = 150 
     circle3 = mycanvas.create_oval(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     circles_list3.append(circle3) 
    c1_3 =mycanvas.itemconfig(circles_list3[0]) 
    c2_3 =mycanvas.itemconfig(circles_list3[1]) 
    c3_3 =mycanvas.itemconfig(circles_list3[2]) 
    c4_3 =mycanvas.itemconfig(circles_list3[3]) 

    for x in range(30,220,48): 
     y = 200 
     circle4 = mycanvas.create_oval(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     circles_list4.append(circle4) 
    c1_4 =mycanvas.itemconfig(circles_list4[0]) 
    c2_4 =mycanvas.itemconfig(circles_list4[1]) 
    c3_4 =mycanvas.itemconfig(circles_list4[2]) 
    c4_4 =mycanvas.itemconfig(circles_list4[3]) 

    for x in range(30,220,48): 
     y = 250 
     circle5 = mycanvas.create_oval(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     circles_list5.append(circle5) 
    c1_5 =mycanvas.itemconfig(circles_list5[0]) 
    c2_5 =mycanvas.itemconfig(circles_list5[1]) 
    c3_5 =mycanvas.itemconfig(circles_list5[2]) 
    c4_5 =mycanvas.itemconfig(circles_list5[3]) 

    for x in range(30,220,48): 
     y = 300 
     circle6 = mycanvas.create_oval(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     circles_list6.append(circle6) 
    c1_6 =mycanvas.itemconfig(circles_list6[0]) 
    c2_6 =mycanvas.itemconfig(circles_list6[1]) 
    c3_6 =mycanvas.itemconfig(circles_list6[2]) 
    c4_6 =mycanvas.itemconfig(circles_list6[3],fill = current_color) 


    #RECTANGLES*** 
    for x in range(210,300,25): 
     y = 50 
     rectangle1 = mycanvas.create_rectangle(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     rectangles_list1.append(rectangle1) 
    r1_1 =mycanvas.itemconfig(rectangles_list1[0]) 
    r2_1 =mycanvas.itemconfig(rectangles_list1[1]) 
    r3_1 =mycanvas.itemconfig(rectangles_list1[2]) 
    r4_1 =mycanvas.itemconfig(rectangles_list1[3]) 
    for x in range(210,300,25): 
     y = 100 
     rectangle2 = mycanvas.create_rectangle(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     rectangles_list2.append(rectangle2) 
    r1_2 =mycanvas.itemconfig(rectangles_list2[0]) 
    r2_2 =mycanvas.itemconfig(rectangles_list2[1]) 
    r3_2 =mycanvas.itemconfig(rectangles_list2[2]) 
    r4_2 =mycanvas.itemconfig(rectangles_list2[3]) 
    for x in range(210,300,25): 
     y = 150 
     rectangle3 = mycanvas.create_rectangle(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     rectangles_list3.append(rectangle3) 
    r1_3 =mycanvas.itemconfig(rectangles_list3[0]) 
    r2_3 =mycanvas.itemconfig(rectangles_list3[1]) 
    r3_3 =mycanvas.itemconfig(rectangles_list3[2]) 
    r4_3 =mycanvas.itemconfig(rectangles_list3[3]) 
    for x in range(210,300,25): 
     y = 200 
     rectangle4 = mycanvas.create_rectangle(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     rectangles_list4.append(rectangle4) 
    r1_4 =mycanvas.itemconfig(rectangles_list4[0]) 
    r2_4 =mycanvas.itemconfig(rectangles_list4[1]) 
    r3_4 =mycanvas.itemconfig(rectangles_list4[2]) 
    r4_4 =mycanvas.itemconfig(rectangles_list4[3]) 
    for x in range(210,300,25): 
     y = 250 
     rectangle5 = mycanvas.create_rectangle(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     rectangles_list5.append(rectangle5) 
    r1_5 =mycanvas.itemconfig(rectangles_list5[0]) 
    r2_5 =mycanvas.itemconfig(rectangles_list5[1]) 
    r3_5 =mycanvas.itemconfig(rectangles_list5[2]) 
    r4_5 =mycanvas.itemconfig(rectangles_list5[3]) 
    for x in range(210,300,25): 
     y = 300 
     rectangle6 = mycanvas.create_rectangle(x-r, y-r, x+r, y+r, outline='#000000',fill='white') 
     rectangles_list6.append(rectangle6) 
    r1_6 =mycanvas.itemconfig(rectangles_list6[0]) 
    r2_6 =mycanvas.itemconfig(rectangles_list6[1]) 
    r3_6 =mycanvas.itemconfig(rectangles_list6[2]) 
    r4_6 =mycanvas.itemconfig(rectangles_list6[3]) 

    print(answer_key) 




    enter_button = Button(root,text='Enter') 

    B1 = Button(root,text='B1') # Use these buttons to change each column of circles 
    B2 = Button(root,text='B2') 
    B3 = Button(root,text='B3') 
    B4 = Button(root,text='B4') 

    enter_button.place(relx=1, x=-125, y=380, anchor=NE) 

    B1.place(relx=1, x=-246, y=325, anchor=NE) 
    B2.place(relx=1, x=-199, y=325, anchor=NE) 
    B3.place(relx=1, x=-150, y=325, anchor=NE) 
    B4.place(relx=1, x=-101, y=325, anchor=NE) 


    mycanvas.addtag_all("all") 
    root.mainloop() 

if __name__ == "__main__": 
    main() 
+0

を私たちは作業例を必要とします。あなたは私たちに十分な詳細を与えていない。 'mycanvas'とは何ですか? 'circles_list1'とは何ですか? 'Button'とは何ですか?これらのものは、使用しているPythonパッケージのものですか? – Mike

+0

okay full code – saaaaaaap

+1

これははるかに優れていますが、今は少しです。あなたは「最小限の作業例」と呼ばれるものを求めています。 「最小」に注意してください。問題を発生させるのに必要な最小限の量に問題を絞り込むことは、実際に問題を解決するのに役立ちます。しかし、他の人にあなたを手伝ってもらうには、時間を無駄にする必要はありません。 – Mike

答えて

1

使用next反復子1からアイテムを取得する:

>>> import itertools 
>>> color_iteration = itertools.cycle(('blue', 'green', 'orange', 'red', 'yellow')) 
>>> next(color_iteration) 
'blue' 
>>> next(color_iteration) 
'green' 
>>> next(color_iteration) 
'orange' 

circle1 = mycanvas.create_oval(x-r, y-r, x+r, y+r, outline='#000000',  
           fill=next(color_iteration))