पाइथन में मेरा कॉनवे का जीवन क्रियान्वयन का खेल नियमों का सही पालन नहीं करता है, और मैं यह नहीं समझ सकता कि क्या गलत हो सकता है। जब मैंने गॉली में अंतिम कॉन्फ़िगरेशन लगाया, तो यह मेरे पिछले काम से पहले जारी रहा।लाइफ पैटर्न का गेम ग़लत ढंग से किया गया
मैंने पहली बार कॉन्फ़िगरेशन डालकर प्रोग्राम की पहचान की जिस पर मेरा प्रोग्राम गॉली में रुक गया, और उसके बाद यह ध्यान दिया जा रहा था कि इसे आगे बढ़ाया जा सकता है।
मैंने अपने गेम से गॉली में एक छोटा सा बोर्ड भी लगाया, और यह मेरी कॉन्फ़िगरेशन से काफी अलग हो गया। गॉली जीवन सिम्युलेटर का एक गेम है जिसका व्यापक रूप से उपयोग किया जाता है।
- मैं अपने कोड में तर्क बयान तोड़ दिया कोई
and
/or
बयानों का उपयोग करें:मैं अपने इस समस्या को ठीक करने के लिए कई अलग अलग बातें की कोशिश की है।
- मैंने अपने
neighbors()
फ़ंक्शन को अपने प्रोग्राम में डालने और कुछ ग्रिड कॉन्फ़िगरेशन सेट करके परीक्षण किया। - फिर मैंने मुद्रित ग्रिड को देखा, और मैंने एक निश्चित स्थिति पर
neighbors()
कहा। यह पूरी तरह से काम किया।
मेरा कोड देखकर, मैं नहीं देख सकता कि यह क्यों काम नहीं कर रहा है। मुझे त्रुटियां नहीं मिलती हैं, यह काम करता है, यह सिर्फ गलत काम करता है। पैटर्न उन्हें कैसे करना चाहिए उससे काफी अलग प्रगति करते हैं। यह पहला> 100 लाइन प्रोग्राम भी है जिसे मैंने ट्यूटोरियल का पालन किए बिना भी लिखा है, इसलिए अगर उत्तर स्पष्ट है तो मुझे माफ़ कर दो।
प्रासंगिक कोड इस प्रकार है:
#Function to find number of live neighbors
def neighbors(row, column):
adjacents = 0
#Horizontally adjacent
if row > 0:
if board[row-1][column]:
adjacents += 1
if column > 0:
if board[row][column-1]:
adjacents += 1
if row < thesize-1:
if board[row+1][column]:
adjacents += 1
if column < thesize-1:
if board[row][column+1]:
adjacents += 1
#Diagonally adjacent
if row > 0 and column > 0:
if board[row-1][column-1]:
adjacents += 1
if row < thesize-1 and column < thesize-1:
if board[row+1][column+1]:
adjacents += 1
if row > 0 and column < thesize-1:
if board[row-1][column+1]:
adjacents += 1
if row < thesize-1 and column > 0:
if board[row+1][column-1]:
adjacents += 1
#Return the final count (0-8)
return adjacents
यह पूरी तरह से काम पर लौटने के लिए कैसे किसी भी सेल के 8 पड़ोसियों के कई जीवित हैं लगता है। यह अगला बिट तर्क हिस्सा है, जहां मुझे लगता है कि समस्या है। यह खेल के नियमों के अनुसार सरणी बदलता है।
#Main loop
while 1:
#Manage the rules of the game
for r in range(len(board)):
for c in range(len(board)):
neighborcount = neighbors(r, c)
if board[r][c]:
giveLife(r, c)
if neighborcount < 2 or neighborcount > 3:
board[r][c] = False
elif not board[r][c]:
killRuthlessly(r, c)
if neighborcount == 3:
board[r][c] = True
आखिरकार, वह भाग जो पगैम स्क्रीन पर दृश्यों को चालू और बंद करता है। यह परीक्षण किया जाता है, और अच्छी तरह से काम करता प्रतीत होता है, मैंने सोचा कि अगर कोई समस्या हो तो मैं इसे शामिल कर दूंगा।
for r in range(len(board)):
for c in range(len(board)):
if board[r][c]:
giveLife(r, c)
if not board[r][c]:
killRuthlessly(r, c)
giveLife
, एक समारोह है कि दी गई स्थिति पर एक काले रंग की आयत ड्रॉ है killRuthlessly
एक सफेद एक खींचता है। ये दोनों ठीक से काम करने लगते हैं।
[पाइथन के साथ जीवन के Conway के खेल के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/8484802/conways-game-of-life-with-python) – OJFord
यह नहीं है। वे मेरी समस्या से पहले थे। –
यह डाउनवॉटेड क्यों है ?? –