Module 没有名为';型号';,python 3.5.2
从互联网上获得了这个Arkanoid克隆代码,但是即使在安装pygame二进制文件后仍然不想工作(“ImportError:没有名为‘Models’的模块”)。我正在使用Spyder Python 3.5,并从中克隆了所有repoModule 没有名为';型号';,python 3.5.2,module,models,importerror,named,Module,Models,Importerror,Named,从互联网上获得了这个Arkanoid克隆代码,但是即使在安装pygame二进制文件后仍然不想工作(“ImportError:没有名为‘Models’的模块”)。我正在使用Spyder Python 3.5,并从中克隆了所有repo 导入pygame 导入系统 输入数学 随机输入 从pygame.locals导入* 导入游戏模块 从GameModule.Models导入* 从GameModule.Constants导入* 班级游戏: def播放声音(自身,文件名): sound=pygame.mi
导入pygame
导入系统
输入数学
随机输入
从pygame.locals导入*
导入游戏模块
从GameModule.Models导入*
从GameModule.Constants导入*
班级游戏:
def播放声音(自身,文件名):
sound=pygame.mixer.sound(文件名)
播放
定义初始化(自):
pygame.init()
pygame.mixer.init(11025)
self.actualState=状态[“开始”]
self.display=pygame.display.set_模式(gfx[“屏幕”])
pygame.display.set_标题(“Arkanoid v”+版本)
#4个基本对象,用于定义游戏
##画师-在屏幕上绘制实际情况
##映射器-加载映射
##状态-保持游戏的姿态:点数、寿命、实际加电等
##物品-持有实际游戏的物品:球、砖块、垫子等
self.objects=GameModule.objects()
self.mapper=GameModule.mapper(self.objects)
self.status=status()
self.painter=GameModule.painter(self.display、self.objects、self.status)
self.lastState=None
self.fps=pygame.time.Clock()
self.newLevel()
def回路(自):
self.fps.tick(gfx[“帧率”])
对于pygame.event.get()中的事件:
self.handleGlobalEvents(事件)
自手动事件(事件)
self.handleKeyboard()
self.updateState()
如果self.actualState!=州[“GAMEOVER”]:
self.painter.draw()
其他:
self.display.fill((0,0,0))
bigFont=pygame.font.SysFont(“无衬线”,32)
gameOver=bigFont.render(“游戏结束!”,True,(255255))
smallFont=pygame.font.SysFont(“无衬线”,18)
points=smallFont.render(“Punktow:+str(self.status.points),True,(255255))
self.display.blit(gameOver,(gfx[“屏幕”][0]/2-gameOver.get_size()[0]/2,gfx[“屏幕”][1]/2-gameOver.get_size()[1]/2))
self.display.blit(点数,(gfx[“屏幕”][0]/2-points.get_size()[0]/2,gfx[“屏幕”][1]/2-gameOver.get_size()[1]/2-40))
pygame.display.update()
def handleEvents(自身、事件):
如果self.actualState!=状态[“暂停”]:
如果event.type==KEYDOWN:
如果event.key==K_p:
self.lastState=self.actualState
self.actualState=状态[“暂停”]
self.painter.paintered=True
其他:
如果event.type==KEYDOWN:
如果event.key==K_p:
self.actualState=self.lastState
self.painter.paintered=False
如果self.actualState==状态[“开始”]:
如果event.type==KEYDOWN:
如果event.key==K_空间:
self.actualState=状态[“进度”]
(self.objects.balls())[0]。速度更改(int(math.copysign(5.,float(self.objects.pad().lastMove)),-5)
def handleGlobalEvents(自身、事件):
如果event.type==退出:
sys.exit()
def手持键盘(自身):
pressed=pygame.key.get_pressed()
如果self.actualState==状态[“进度”]或self.actualState==状态[“开始”]:
如果按下[K_LEFT]:
如果self.objects.pad().move(-10)和self.actualState==状态[“开始”]:
(self.objects.balls())[0]。移动(-10,0)
如果按下[K_RIGHT]:
如果self.objects.pad().move(10)和self.actualState==状态[“开始”]:
(self.objects.balls())[0]。移动(10,0)
房地产(自):
如果self.actualState==状态[“暂停”]:
返回
如果self.actualState==状态[“进度”]:
self.objects.updatePowerups()
对于self.objects.balls()中的球:
速度=球。速度()
球移动(速度[0],速度[1])
如果ball.CollizewithWall():
pos=ball.pos()
如果pos[0]==0或pos[0]>=gfx[“屏幕”][0]-球.图像.get_size()[0]-1:
ball.xInvert()
如果位置[1]==0:
ball.yInvert()
如果pos[1]>=gfx[“屏幕”][1]-ball.image.get_size()[1]-1:
self.status.lifes-=1
self.actualState=状态[“开始”]
self.playSound(“参考资料/snd/chord.wav”)
而len(self.objects.balls())!=1:
self.objects.removeBall((self.objects.balls())[0])
对于self.objects.powerups()中的通电:
self.objects.deletePowerup(通电)
self.objects.balls()[0].reset()
self.objects.pad().reset()
对于self.objects.grid()中的obj:
如果发生碰撞(obj):
self.status.points+=100
如果obj.realx=球位置[0]:
ball.yInvert()
如果obj.realy=球位置[1]:
ball.xInvert()
自行车把碰撞(obj)
如果ball.collision(self.objects.pad()):
ball.yInvert()
如果self.objects.pad().position[1]=ball.position[1]:
ball.xInvert()
对于self.objects.powerups()中的通电:
pad=self.objects.pad()
如果通电。碰撞(焊盘):
self.objects.deletePowerup(通电)
self.generatePowerup()
如果powerup.y==gfx[“屏幕”][1]-1-powerup.image.get_size()[1]:
self.objects.deletePowerup(通电)
如果self.status.lifes==0:
self.actualState=状态[“GAMEOVER”]
如果self.objects.grid()=[]:
self.status.level+=1
如果len(levels)=self.status.level:
self.actualStatus=状态[“
import pygame
import sys
import math
import random
from pygame.locals import *
import GameModule
from GameModule.Models import *
from GameModule.Constants import *
class Game:
def playSound( self, fileName ):
sound = pygame.mixer.Sound(fileName)
sound.play()
def __init__(self):
pygame.init()
pygame.mixer.init(11025)
self.actualState = states["START"]
self.display = pygame.display.set_mode( gfx["screen"] )
pygame.display.set_caption( "Arkanoid v" + version )
# 4 basic objects, which define the game
## Painter - drawing actual situation on screen
## Mapper - loading the map
## Status - holding stance of the game: points, lifes, actual powerups etc
## Objects - holding actual game's objects: balls, bricks, pad etc
self.objects = GameModule.Objects()
self.mapper = GameModule.Mapper( self.objects )
self.status = Status()
self.painter = GameModule.Painter( self.display, self.objects, self.status )
self.lastState = None
self.fps = pygame.time.Clock()
self.newLevel()
def loop(self):
self.fps.tick( gfx["framerate"] )
for event in pygame.event.get():
self.handleGlobalEvents( event )
self.handleEvents( event )
self.handleKeyboard()
self.updateState()
if self.actualState != states["GAMEOVER"]:
self.painter.draw()
else:
self.display.fill( (0,0,0) )
bigFont = pygame.font.SysFont( "sans-serif", 32 )
gameOver = bigFont.render( "GAME OVER!", True, (255,255,255) )
smallFont = pygame.font.SysFont( "sans-serif", 18 )
points = smallFont.render( "Punktow: " + str(self.status.points), True, (255,255,255) )
self.display.blit( gameOver, (gfx["screen"][0]/2 - gameOver.get_size()[0]/2, gfx["screen"][1]/2 - gameOver.get_size()[1]/2) )
self.display.blit( points, (gfx["screen"][0]/2 - points.get_size()[0]/2, gfx["screen"][1]/2 - gameOver.get_size()[1]/2 - 40) )
pygame.display.update()
def handleEvents( self, event ):
if self.actualState != states["PAUSE"]:
if event.type == KEYDOWN:
if event.key == K_p:
self.lastState = self.actualState
self.actualState = states["PAUSE"]
self.painter.paused = True
else:
if event.type == KEYDOWN:
if event.key == K_p:
self.actualState = self.lastState
self.painter.paused = False
if self.actualState == states["START"]:
if event.type == KEYDOWN:
if event.key == K_SPACE:
self.actualState = states["PROGRESS"]
(self.objects.balls())[0].speedChange( int( math.copysign( 5., float(self.objects.pad().lastMove) ) ), -5 )
def handleGlobalEvents( self, event ):
if event.type == QUIT:
sys.exit()
def handleKeyboard(self):
pressed = pygame.key.get_pressed()
if self.actualState == states["PROGRESS"] or self.actualState == states["START"]:
if pressed[K_LEFT]:
if self.objects.pad().move(-10) and self.actualState == states["START"]:
(self.objects.balls())[0].move(-10,0)
if pressed[K_RIGHT]:
if self.objects.pad().move(10) and self.actualState == states["START"]:
(self.objects.balls())[0].move(10,0)
def updateState(self):
if self.actualState == states["PAUSE"]:
return
if self.actualState == states["PROGRESS"]:
self.objects.updatePowerups()
for ball in self.objects.balls():
speed = ball.speed()
ball.move( speed[0], speed[1] )
if ball.collideWithWall():
pos = ball.pos()
if pos[0] == 0 or pos[0] >= gfx["screen"][0] - ball.image.get_size()[0] - 1:
ball.xInvert()
if pos[1] == 0:
ball.yInvert()
if pos[1] >= gfx["screen"][1] - ball.image.get_size()[1] - 1:
self.status.lives -= 1
self.actualState = states["START"]
self.playSound( "Resources/snd/chord.wav" )
while len(self.objects.balls()) != 1:
self.objects.removeBall((self.objects.balls())[0])
for powerup in self.objects.powerups():
self.objects.deletePowerup(powerup)
self.objects.balls()[0].reset()
self.objects.pad().reset()
for obj in self.objects.grid():
if ball.collision(obj):
self.status.points += 100
if obj.realx <= ball.position[0] and obj.realx + gfx["grid"][0] >= ball.position[0]:
ball.yInvert()
if obj.realy <= ball.position[1] and obj.realy + gfx["grid"][1] >= ball.position[1]:
ball.xInvert()
self.handleBrickCollision(obj)
if ball.collision(self.objects.pad()):
ball.yInvert()
if self.objects.pad().position[1] <= ball.position[1] and self.objects.pad().position[1] + gfx["grid"][1] >= ball.position[1]:
ball.xInvert()
for powerup in self.objects.powerups():
pad = self.objects.pad()
if powerup.collision(pad):
self.objects.deletePowerup(powerup)
self.generatePowerup()
if powerup.y == gfx["screen"][1] - 1 - powerup.image.get_size()[1]:
self.objects.deletePowerup(powerup)
if self.status.lives == 0:
self.actualState = states["GAMEOVER"]
if self.objects.grid() == []:
self.status.level += 1
if len(levels) == self.status.level:
self.actualStatus = states["GAMEOVER"]
else:
self.newLevel()
for modifier in self.status.modifiers:
modifier[1] -= 1
if modifier[1] == 0:
if modifier[0] == "big_pad":
self.objects.pad().setWidth(3)
del modifier
def generatePowerup(self):
r = random.randint(1,3)
# 3 possible powerups:
# 1 - +1 life
# 2 - for 30 sec the pad is larger
# 3 - additional ball
print (r)
if r == 1:
self.status.lives += 1
elif r == 2:
self.status.modifiers.append( [ "big_pad", gfx["framerate"] * 30 ] )
self.objects.pad().setWidth(5)
elif r == 3:
ball = Ball()
ball.position[0] = self.objects.pad().position[0] + (gfx["grid"][0]*self.objects.pad().gridWidth/2)
ball.speedChange( int( math.copysign( 5., float(self.objects.pad().lastMove) ) ), -5 )
self.objects.addBall(ball)
def handleBrickCollision(self,obj):
brickType = obj.getType()
if brickType == "simple":
self.objects.setGrid( obj.x, obj.y, None )
rand = random.randint( 0, 9 )
if rand == 9: # 1/10 chance for powerup
self.objects.spawnPowerup( obj.x, obj.y )
elif brickType == "solid":
self.objects.setGrid( obj.x, obj.y, SimpleBrick(obj.x,obj.y) )
elif brickType == "ghost":
newType = random.randint( 0, 1 )
if newType == 0:
self.objects.setGrid( obj.x, obj.y, SimpleBrick(obj.x,obj.y) )
elif newType == 1:
self.objects.setGrid( obj.x, obj.y, SolidBrick(obj.x,obj.y) )
self.playSound( "Resources/snd/ding.wav" )
def newLevel(self):
self.playSound( "Resources/snd/tada.wav" )
self.mapper.load( self.status.level )
self.objects.pad().reset()
while len(self.objects.balls()) != 1:
self.objects.removeBall((self.objects.balls())[0])
self.objects.balls()[0].reset()
self.actualState = states["START"]
class Status:
def __init__(self):
self.level = 0
self.points = 0
self.lives = startState["lives"]
self.modifiers = []
game = Game()
while True:
game.loop()