Это сводит меня с ума, я работаю над программой моделирования схем, и каждый раз, когда я задаю вопрос об этом, он закрывается.Почему этот код не работает должным образом?
Мне очень нужна помощь, но мои вопросы закрываются, прежде чем кто-нибудь сможет мне помочь.
В любом случае, вот в чем проблема: На самом деле, я не знаю, в чем проблема, что-то не так с этим кодом, и я понятия не имею, что это такое? Все выглядит отлично, я не могу найти никаких ошибок, но он просто не работает.
В этой программе есть провода и источники питания, когда я размещаю источник питания рядом с проводом, я хочу, чтобы он стал включенным, и все подключенные провода также включались, но эта программа показывает очень странную поведение и все, кроме того, что я думал, что это будет делать. Я хотел, чтобы провод к загорелся, когда к нему подключен источник питания, и отключите его, когда его нет. Они загораются, когда я размещаю источник питания, но когда я размещаю больше проводов, все они становятся отключенными, и я не могу понять, почему.
(темно-красный = питание черный = не работает) Здесь когда я помещаю один провод рядом с источником питания:
Но потом я добавить еще и:
Вот код:
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
Я задал несколько вопросов по этому вопросу, я думаю, люди начнут путаться. Позвольте мне отредактировать его, пожалуйста, не закрывайте это. –