मुझे समझ में नहीं आता कि 1 बॉक्स कैसे बनाया जाता है जिसे कई बार क्लोन किया जा रहा है जहां हर दूसरे ब्लॉक का एक अलग रंग होता है। मैंने एक मुख्य बॉक्स बनाने और इसे आकार देने के बारे में सोचा और फिर एक लूप बनाया जिसमें मैंने इसे कई बार क्लोन किया, लेकिन मैं इसे हमेशा दूसरे क्लोन के बगल में क्लोन करने के लिए लूप नहीं बना सकता। साथ ही जब रंगों की बात आती है तो मैंने एक सूची को परिभाषित किया जो मुझे इस चर के लिए एक त्रुटि देता है जिसका उपयोग नहीं किया जा रहा है, मैं इसका उपयोग करना चाहता था इसलिए हर दूसरे ब्लॉक को दूसरे रंग में बनाएं।

def draw_boxes(box_list):

    box = Turtle()
    box.shape("square")
    box.shapesize(1, 3)

    color_list = ["cyan", "pink"]

    box_list = []

    #Box_layer1
    for box_layer1 in range(9):
        box_layer1 = box.clone()
        box_layer1.goto() # not filled in since i dont know how to make the clone go to the other clone

    # Box_layer2

    # Box_layer3
    pass

ऐसा लगता है कि मुझे बहुत परेशानी हो रही है अगर कोई कुछ भी जानता है तो यह आश्चर्यजनक होगा।

0
HandsomeBanana 27 नवम्बर 2020, 16:03

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि जब भी draw_boxes फ़ंक्शन कहा जाता है, तो आप एक Turtle ऑब्जेक्ट को परिभाषित कर रहे हैं। इसके परिणामस्वरूप बहुत अधिक Turtles होंगे। इसके बजाय, फ़ंक्शन के बाहर boxes_list परिभाषित करें।

प्रत्येक बॉक्स की अनुक्रमणिका के साथ box_list के माध्यम से पुनरावृति करने के लिए ताकि प्रत्येक पुनरावृत्ति के दौरान पिछले बॉक्स तक पहुँचा जा सके, enumerate का उपयोग करें।

नीचे दिया गया कोड एक प्रदर्शन है, जहां Turtles एक स्लिंकी आंदोलन में चलते हैं :

from turtle import Turtle, Screen

wn = Screen()

box_list = []
color_list = ["cyan", "pink"]

for i in range(10):
    box = Turtle("square")
    box.color(color_list[i%2])

    box_list.append(box)

def draw_boxes(head):
    for i, box in enumerate(box_list):
        if i:
            box.goto(box_list[i-1].pos())
        else:
            box.goto(head.pos())
        box.color(color_list[i%2])

head = Turtle("square")
head.color("pink")

wn.listen()
wn.onkey(lambda: head.right(90), "Right")
wn.onkey(lambda: head.left(90), "Left")

while True:
    head.forward(40)
    draw_boxes(head)

आउटपुट:

enter image description here

यदि आप मानक साँप खेल आंदोलन चाहते हैं:

from turtle import Turtle, Screen
from time import sleep

wn = Screen()
wn.tracer(0)

box_list = []
color_list = ["cyan", "pink"]

for i in range(10):
    box = Turtle("square")
    box.color(color_list[i%2])
    box_list.append(box)

def draw_boxes(head):
    for i, box in enumerate(box_list):
        if i < len(box_list) - 1:
            box.goto(box_list[i+1].pos())
        else:
            box.goto(head.pos())

head = Turtle("square")
head.color('yellow')

wn.listen()
wn.onkey(lambda: head.right(90), "Right")
wn.onkey(lambda: head.left(90), "Left")

while True:
    draw_boxes(head)
    head.forward(20)
    wn.update()
    sleep(0.2)

आउटपुट:

enter image description here


अपडेट करें:

पता चला कि यह एक बॉक्स-ब्रेकर गेम माना जाता है, न कि सांप का खेल।

बॉक्स ब्रेकर गेम के लिए:

from turtle import Turtle, Screen

wn = Screen()
wn.setup(600, 600)
wn.tracer(0)

def create_boxes(rows, cols, x, y, w, h):
    color_list = ["cyan", "pink"]
    boxes_list = []
    for i in range(rows):
        for j in range(cols):
            box = Turtle("square")
            box.penup()
            box.shapesize(w, h, 3) # The 3 is the outline's width. If you don't want it, simply remove that argument.
            box.color("white", color_list[(j + i) % 2]) # The first argument, "white", is the outline color. If you don't want it, simply remove that argument.
            box.goto(x + h * 20 * j, y + w * 20 * i)
            boxes_list.append(box)
    return boxes_list

boxes_list = create_boxes(3, 9, -245, 230, 1, 3)
wn.update()

enter image description here

1
Ann Zen 27 नवम्बर 2020, 18:50