這讓我瘋狂,我正在製作一個電路仿真程序,每當我問一個關於它的問題它就會關閉。爲什麼這段代碼不能正常工作?
我真的需要幫助,但是我的問題在任何人都可以幫助我回答之前就會關閉。
反正,這裏是問題: 其實,我不知道問題是什麼,這個代碼有什麼問題,我不知道它是什麼?這一切看起來很好,我找不到任何錯誤,但它只是不工作。
在這個程序中,有電線和電源,當我在電線旁邊放置電源時,我希望它能夠通電,並且所有連接的電線也通電,但是這個程序顯示非常奇怪行爲以及除了我原以爲會做的事之外的所有事情。當連接到電源時,我想讓點亮,當沒有連接電源時關閉。當我放置電源時,它們會亮起來,但是當我放置更多導線時,它們全都被禁用,我似乎無法弄清楚爲什麼。
(暗紅色=供電黑色=不通電) 這是當我將一個導線的電源旁:
但後來我添加越來越:
這裏是代碼:
import pygame
from pygame.locals import *
pygame.init()
screen=pygame.display.set_mode((640,480))
blocks=[]
class PowerSource(object):
def __init__(self,pos):
self.posx=pos[0]
self.posy=pos[1]
self.rect=pygame.Rect(self.posx,self.posy,32,32)
self.powered=True
def update(self):
pygame.draw.rect(screen, (255,0,0), self.rect, 0)
def repos(self):
pass
class Circuit(object):
def __init__(self,pos):
self.powered=False
self.posx=pos[0]
self.posy=pos[1]
self.rect=pygame.Rect(self.posx,self.posy,32,32)
self.topped=False
self.lefted=False
self.righted=False
self.bottomed=False
def update(self):
self.powered=False
if any(b.rect.collidepoint(self.rect.left,self.rect.top-5) for b in [b for b in blocks if b is not self]):
if b.powered==True:
self.powered=True
if any(b.rect.collidepoint(self.rect.left,self.rect.top+38) for b in [b for b in blocks if b is not self]):
if b.powered==True:
self.powered=True
if any(b.rect.collidepoint(self.rect.left-5,self.rect.top) for b in [b for b in blocks if b is not self]):
if b.powered==True:
self.powered=True
if any(b.rect.collidepoint(self.rect.right+5,self.rect.top) for b in [b for b in blocks if b is not self]):
if b.powered==True:
self.powered=True
if not self.powered:
pygame.draw.rect(screen, (0,0,0), self.rect, 0)
else:
pygame.draw.rect(screen, (200,0,0), self.rect, 0)
while True:
place=1
screen.fill((255,255,255))
mse=pygame.mouse.get_pos()
mse=((mse[0]/32)*32,(mse[1]/32)*32)
pressed=pygame.mouse.get_pressed()
if pressed==(1,0,0):
pressed='L'
elif pressed==(0,0,1):
pressed='R'
for b in blocks:
b.update()
pygame.draw.rect(screen, (255,0,0), (mse[0],mse[1],32,32), 2)
for e in pygame.event.get():
if e.type==QUIT:
exit()
key=pygame.key.get_pressed()
if key[K_SPACE]:
for b in blocks:
if b.rect.collidepoint(mse):
place=0
if place==1:
blocks.append(PowerSource(mse))
if pressed=='L':
for b in blocks:
if b.rect.collidepoint(mse):
place=0
if place==1:
blocks.append(Circuit(mse))
elif pressed=='R':
for b in blocks:
if b.rect.collidepoint(mse):
blocks.remove(b)
pygame.display.flip()
請幫助我!我非常失望。
儘量做到儘可能具體。什麼是你正在得到確切的錯誤信息? –
「除了我認爲會做的一切之外,做的一切事情」都是難以理解的。我們沒有什麼可繼續下去的。 – mhlester
我問過這個問題的多個問題,我認爲人們會開始感到困惑。讓我去編輯它,請不要關閉它。 –