This question m'a déjà donné la raison pour laquelle cette erreur se produit maintenant, je veux savoir comment résoudre ce problème.Erreur d'attribut sur tordu
Voici le code pour main.py
from twisted.internet import reactor
import pygame
from networking import run, construct_factory
class GameEngine(object):
def __init__(self, client):
pygame.init()
self.screen = pygame.display.set_mode((640, 400))
self.FPS = 60
self.client = client.connectedProtocol
reactor.callWhenRunning(self.grab_all_sprites)
def grab_all_sprites(self):
with open('sprites.txt') as sprites:
for sprite in sprites:
sprite_file = self.client.download_sprite(sprite)
with open(r'resources\%s.png' % sprite, 'wb') as out:
out.write(sprite_file)
def spin(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
reactor.stop()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
print "spacebar!"
#update the player
pygame.display.flip()
reactor.callLater((1/self.FPS), self.spin)
if __name__ in '__main__':
client = construct_factory()
game = GameEngine(client)
run(game, client)
ici est le code pour networking.py
from twisted.internet import reactor
from twisted.internet.protocol import ClientFactory
from twisted.protocols import amp
import sys
from ampcommands import TransferSprite
class GameClient(amp.AMP):
def download_sprite(self, sprite):
self.callRemote(TransferSprite, sprite)
class GameClientFactory(ClientFactory):
protocol = GameClient
def buildProtocol(self, address):
proto = ClientFactory.buildProtocol(self, address)
self.connectedProtocol = proto
return proto
def construct_factory():
return GameClientFactory()
def run(game, factory, verbose=True):
if verbose:
from twisted.python import log
log.startLogging(sys.stdout)
reactor.connectTCP("localhost", 1234, factory)
reactor.callWhenRunning(game.spin)
reactor.run()
Je ne sais pas la moindre façon d'obtenir game.spin
être appelée après la la connexion est faite de sorte que GameClientFactory.connectedProtocol
. Je suis confus et fatigué quelqu'un peut-il trouver un meilleur moyen?
Comme toujours une réponse étonnante. –