pygame编程游戏时的出现的属性错误

duola梦 发布于 2016/08/31 20:27
阅读 425
收藏 0

今天试了下pygame,不过却一直出现下面的错误,希望大牛们帮我看看,不尽感激!

错误提醒:

Traceback (most recent call last):
  File "C:/Users/near/AppData/Local/Programs/Python/Python35/PyGame.py", line 126, in <module>
    game.Start()
  File "C:/Users/near/AppData/Local/Programs/Python/Python35/PyGame.py", line 34, in Start
    self.screen.blit(self.title,(200,100,400,140))
AttributeError: 'Game' object has no attribute 'screen'


代码如下:

#_*_ coding:utf-8 _*_
#file: pyGame.py
#
import sys
import pygame
import threading
import random


class  Game:
    def _init_(self):
        pygame.init()
        self.screen = pygame.display.set_mode((800,600))
        pygame.display.set_caption("Python Game")
        self.image = []
        self.imagerect = []
        self.vs  = pygame.image.load('image/vs.gif')
        self.o = pygame.image.load('image/o.gif')
        self.p = pygame.image.load('image/p.gif')
        self.u = pygame.image.load('image/u.gif')
        self.title = pygame.image.load('image/title.gif')
        self.start = pygame.image.load('image/start.gif')
        self.exit = pygame.image.load('image/exit.gif')
        for i in range(3):
            gif = pygame.image.load('image/'+ str(i) + '.gif')
            self.image.append(gif)
        for i in range(3):
            image = self.image[i]
            rect = image.get_rect()
            rect.left = 200 * (i+1) + rect.left
            rect.top = 400
            self.imagerect.append(rect)


    def Start (self):
        self.screen.blit(self.title,(200,100,400,140))
        self.screen.blit(self.start,(350,300,100,50))
        self.screen.blit(self.exit,(350,400,100,50))
        pygame.display.flip()
        start = 1
        while start:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    if self.isStart() == 0:
                        start = 0
                    elif self.isStart() == 1:
                        sys.exit()
                    else:
                        pass
                else:
                    pass
        self.run()


    def run(self):
        self.screen.fill((0,0,0))
        for i in range(3):
            self.screen.blit(self.image[i],self.imagerect[i])
        pygame.display.flip()
        while True:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        sys.exit()
                    elif event.type == pygame.MOUSEBUTTONDOWN:
                        self.OnMouseButDown()
                    else :
                        pass


    def isStart(self):
        pos = pygame.mouse.get_pos()
        if pos[0] >350 and pos[0]<450:
            if pos[1] > 300 and pos[1]<350:
                return 0
            elif pos[1] > 400 and pos[1]<450:
                return 1
            else:
                return 2
        else:
            return 2


    def OnMouseButDown(self):
        self.screen.blit(self.vs,(300,150,140,140))
        pos = pygame.mouse.get_pos()
        if pos[1] > 400 and pos[1] < 540:
            if pos[0] >200 and pos[0] < 340:
                self.screen.blit(self.image[0],(150,150,140,140))
                self.isWin(0)
            elif pos[0] > 400 and pos[0] <540:
                self.screen.blit(self.image[1],(150,150,140,140))
                self.isWin(1)
            elif pos[0] > 600 and pos[0] < 740:
                self.screen.blit(self.image[2],(150,150,140,140))
                self.isWin(2)
            else :
                pass


    def isWin(self,value):
        num = random.randint(0,2)
        self.screen.blit(self.image[num],(450,150,590,240))
        pygame.display.flip()
        if num == value:
            self.screen.blit(self.o,(220,10,140,70))
            pygame.display.flip()
        elif num < value:
            if num == 0:
                if value == 2:
                    self.screen.blit(self.u,(220,10,140,70))
                else:
                    self.screen.blit(self.p,(220,10,140,70))
                pygame.display.flip()
            else:
                self.screen.blit(self.u,(220,10,140,70))
                pygame.display.flip()
        else:
                if num == 2:
                    if value ==1:
                        self.screen.blit(self.u,(220,10,140,70))
                    else :
                        self.screen.blit(self.p,(220,10,140,70))
                    pygame.display.flip()
                else:
                    self.screen.blit(self.u,(220,10,140,70))
                pygame.display.flip()




game = Game()
game.Start()

加载中
0
mickelfeng
mickelfeng
哥们儿,构造函数写错了,是左右两个:   def __init__(self):  
duola梦
duola梦
十分谢谢!!
返回顶部
顶部