def __init__(self): self.posicaoX = 0 self.posicaoY = 0 self.cor = 1 self.image = pygame.transform.rotate( carrega_imagem("pincel" + str(self.cor) + ".png"), 0) self.rotacao = 0
def __init__(self, nomearquivo, colunas, linhas, escala=None, rotacao=None, som=True): self.sheet = carrega_imagem(nomearquivo).convert_alpha() if escala is not None: self.sheet = pygame.transform.smoothscale( self.sheet, (int(self.sheet.get_rect().w / escala), int(self.sheet.get_rect().h / escala))) if rotacao is not None: self.sheet = pygame.transform.rotate(self.sheet, rotacao) self.colunas = colunas self.spriteativo = self.aux = 0 self.animacao = None self.som = som self.linhas = linhas self.posicaoRelativa = (0, 0) self.totalCellCount = colunas * linhas self.rect = self.sheet.get_rect() self.rect.width = w = self.cellWidth = self.rect.width / colunas self.rect.height = h = self.cellHeight = self.rect.height / linhas hw, hh = self.cellCenter = (w / 2, h / 2) self.cells = list([(index % colunas * w, index / colunas * h, w, h) for index in range(self.totalCellCount)]) self.handle = list([ (0, 0), (-hw, 0), (-w, 0), (0, -hh), (-hw, -hh), (-w, -hh), (0, -h), (-hw, -h), (-w, -h), ])
def __init__(self, window, largura, altura): pygame.init() fontearquivo = os.path.dirname(os.path.abspath(__file__)).replace( "view", "").replace("model", "") fontearquivo = os.path.join(fontearquivo, "lib") fontearquivo = os.path.join(fontearquivo, "FreeSansBold.ttf") self.fa = fontearquivo self.altura = altura self.fontetipo = 'comicsansms' self.ajuste = 360 self.desenhaalertaCaixaPerdeu = False self.opcoesFases = False self.largura = largura self.scala_x = self.largura / 1366 self.scala_y = self.altura / 768 self.tamanho = (self.largura, self.altura) self.indexAjuda = 1 self.continua = False # pygame.display.set_mode(self.tamanho,pygame.SCALED) self.janela = window self.__janela = carrega_imagem("janela.png") self.cadeado = carrega_imagem("cadeado.png") self.imgVazia = carrega_imagem("rect.png") self.__janela2 = pygame.transform.smoothscale( self.__janela.convert_alpha(), (int(30 * self.scala_x), int(30 * self.scala_y))) # FONTES self.fonteGrande = pygame.font.Font(fontearquivo, int(22 * self.scala_x)) self.fontePequena = pygame.font.Font(fontearquivo, int(12 * self.scala_x)) self.fonteTitulo = pygame.font.Font(fontearquivo, int(55 * self.scala_x)) self.corBranca = Cores.BRANCO self.corfundo = Cores.CORFUNDO self.corPrincipal = Cores.CORPRINCIPAL self.corSecundaria = Cores.CORSECUNDARIA self.corTexto = Cores.CORSECUNDARIA self.cor1Elemento = Cores.CORELEMENTO self.telaInicio = False self.telaConfig = True self.telaSaves = self.telaJogo = self.telaCriar = self.telaFases = self.telaAjuda = False self.rolagem = 0 pygame.display.set_icon(carrega_imagem("icon.png")) pygame.display.set_caption("PaintCoding") # pygame.display.set_mode((self.largura, self.altura),pygame.FULLSCREEN) self.ok = Sprite("ok.png", 1, 2) self.ok.definirPosicao((760, 380)) self.menu = Sprite("menu.png", 1, 2) self.menu.definirPosicao((550, 360)) self.reiniciar = Sprite("reiniciar.png", 1, 2) self.reiniciar.definirPosicao((630, 360)) self.continuar = Sprite("continuar.png", 1, 2) self.continuar.definirPosicao((710, 360)) self.desenhaAlerta = self.desenhaNovoJogo = False self.textoAlerta = ("TEXTO TITULO!", "PRESSIONE OK PARA CONTINUAR!") self.caixaTexto = TextBox(self.janela, int(550 * ESCALAX), int(300 * ESCALAY), 250 * ESCALAX, 40 * ESCALAY, fontSize=20, borderColour=Cores.CORPRINCIPAL, radius=10, borderThickness=5) # INICIO self.botaostart = Sprite("BOTAOJOGAR.PNG", 1, 2) self.botaoCriar = Sprite("BOTAOCRIAR.PNG", 1, 2) self.botaoSair = Sprite("BOTAOSAIR.PNG", 1, 2) self.botaoVolume = Sprite("BOTAOVOLUMEON.PNG", 1, 2) self.btAjuda = Sprite("ajuda.png", 1, 2) self.btyt = Sprite("youtube.png", 1, 2) self.btConfig = Sprite("engrenagem.png", 1, 2) self.img = carrega_imagem("img2.png") self.logo = carrega_imagem("img2.png", escala=3) self.c1 = carrega_imagem("c1.png") self.c2 = carrega_imagem("c2.png") self.c3 = carrega_imagem("c3.png") self.c4 = carrega_imagem("c4.png") self.c5 = carrega_imagem("c5.png") # self.botaostart.definirPosicao((((largura/2)-self.botaostart.rect.h), 330)) self.botaostart.definirPosicao((350 + (self.ajuste / 2), 330)) self.botaoCriar.definirPosicao((350 + (self.ajuste / 2), 450)) self.botaoSair.definirPosicao((350 + (self.ajuste / 2), 570)) # self.botaoCriar.definirPosicao((((largura / 2) - self.botaoCriar.rect.h), 450)) # self.botaoSair.definirPosicao((((largura / 2) - self.botaoSair.rect.h), 590)) self.btyt.definirPosicao((1040, 40)) self.btAjuda.definirPosicao((1130, 50)) self.btConfig.definirPosicao((1210, 50)) self.botaoVolume.definirPosicao((1290, 50)) # ESCOLHERSAVE self.botaoNovoJogo = Sprite("BOTAONOVOJOGO.PNG", 1, 2) self.botaoFasesPersonalizadas = Sprite("BOTAOCRIACOES.PNG", 1, 2) self.botaoVoltar = Sprite("VOLTAR.png", 1, 2) self.botaoCima = Sprite("BOTAOCIMA.png", 1, 2) self.botaoBaixo = Sprite("BOTAOBAIXO.png", 1, 2) self.botaoNovoJogo.definirPosicao((90 + (self.ajuste / 2), 610)) self.botaoFasesPersonalizadas.definirPosicao( (350 + (self.ajuste / 2), 610)) self.botaoCima.definirPosicao((860 + (self.ajuste / 2), 84)) self.botaoBaixo.definirPosicao((860 + (self.ajuste / 2), 510)) self.savesPane = Painel(self.escalarX(943), self.escalarY(493), self.escalarX(25 + (self.ajuste / 2)), self.escalarY(100)) self.moverretangulo = False self.botaoPlay = [] self.botaolixeira = [] self.saves = None # self.fasesPersonalizadas = None # CRIAR self.colunas = self.linhas = 2 self.execucoes = 1 self.btCimaCol = Sprite("BOTAOCIMA.png", 1, 2, 2) self.btCimaLi = Sprite("BOTAOCIMA.png", 1, 2, 2) self.btBaixoCol = Sprite("BOTAOBAIXO.png", 1, 2, 2) self.btBaixoLi = Sprite("BOTAOBAIXO.png", 1, 2, 2) self.btCimaEx = Sprite("BOTAOCIMA.png", 1, 2, 2) self.btBaixoEx = Sprite("BOTAOBAIXO.png", 1, 2, 2) self.btCimaCol.definirPosicao((90, 180)) self.btBaixoCol.definirPosicao((90, 250)) self.btCimaLi.definirPosicao((200, 180)) self.btBaixoLi.definirPosicao((200, 250)) self.btCimaEx.definirPosicao((250, 380)) self.btBaixoEx.definirPosicao((250, 450)) self.botaoProximo = Sprite("BOTAOPROX.PNG", 1, 2) self.botaoVoltarCriar = Sprite("VOLTAR.png", 1, 2) self.botaoVoltarCriar.definirPosicao((1080, 580)) self.botaoProximo.definirPosicao((790, 580)) # config self.sliderVl = Slider(self.janela, self.escalarX(170), self.escalarY(400), self.escalarX(400), self.escalarY(20), min=20, max=300, step=1, colour=Cores.CORSECUNDARIA, handleColour=Cores.CORPRINCIPAL) self.sliderVl.value = Util.Config.VELOCIDADE # self.btCimaVel = Sprite("BOTAOCIMA.png", 1, 2, 2) # self.btBaixoVel = Sprite("BOTAOBAIXO.png", 1, 2, 2) # self.btCimaVel.definirPosicao((250, 280)) # self.btBaixoVel.definirPosicao((250, 350)) self.botaoConfirmar = Sprite("BOTAOSALVAR.PNG", 1, 2) self.botaoConfirmar.definirPosicao((800 + (self.ajuste / 2), 580)) # TELA FASES PERSONALIZADAS self.botaoEsquerda = Sprite("BOTAOESQUERDA.png", 1, 2) self.botaoDireita = Sprite("BOTAODIREITA.png", 1, 2) self.botaoEsquerda.definirPosicao((60, 350)) self.botaoDireita.definirPosicao((1220, 350)) self.contornoFase = None self.btVoltarFases = Sprite("VOLTAR.png", 1, 2) self.btVoltarFases.definirPosicao((950, 600)) self.fasespersonalizadas = None self.rolagemCriacoes = 0 # MSG PERRGUNTA self.desenhaConfirmacao = False self.textopergunta = ("Confirma a exclusão do Progresso?", " Essa ação não poderá ser desfeita!") self.confirmarbotao = Sprite("confirmar.png", 1, 2) self.cancelarbotao = Sprite("cancelar.png", 1, 2) self.confirmarbotao.definirPosicao((850, 390)) self.cancelarbotao.definirPosicao((695, 390)) # JOGO # 943, 493, 25, 70) self.jogoPane = PainelJogo(self, self.largura, self.altura, 0, 0) self.botoesFases = gerarBotaoFase(janela=self.janela) self.nivelJogador = 0 self.telaMenuFases = False # IMAGEM self.imagemConteiner = carrega_imagem("conteiner.png") # TEXTOS self.tituloTelaSave = self.fonteTitulo.render("Jogar", True, self.corPrincipal) self.tituloTelaMenuFase = self.fonteTitulo.render( "Escolha um nível para jogar", True, self.corPrincipal) self.tituloTelaFases = self.fonteTitulo.render("Fases personalizadas", True, self.corPrincipal) self.txt_pane = self.fonteTitulo.render( "Selecione as características da fase: ", True, self.corTexto) self.txt_desenho = self.fonteGrande.render( "Selecione a quantidade de linhas e colunas do desenho: ", True, self.corTexto) self.txt_col_lin = self.fonteGrande.render("Colunas x Linhas: ", True, self.corPrincipal) self.txt_X = self.fonteGrande.render("X", True, self.corPrincipal) self.txt_qntvidas = self.fonteGrande.render( "Selecione a quantidade de execuções disponíveis para concluir o desenho:", True, self.corTexto) self.txt_ex = self.fonteGrande.render("Nº Execuções:", True, self.corPrincipal) self.txt_CONFIG = self.fonteTitulo.render("CONFIGURAÇÕES ", True, self.corTexto) self.txt_descVelocidade = self.fonteGrande.render( "Ajuste com o slider abaixo a velocidade das animações dentro do PaintCode:", True, self.corTexto) self.txt_velocidade = self.fonteGrande.render("VELOCIDADE:", True, self.corPrincipal) self.txt_explicacaoVelocidade = self.fonteGrande.render( "Deslize ", True, self.corPrincipal)
def mudarImg(self, nomearquivo): self.sheet = carrega_imagem(nomearquivo).convert_alpha()
def __init__(self, tela, largura, altura, x=0, y=0): super().__init__(largura, altura, x, y) self.__tela = tela fontearquivo = os.path.dirname(os.path.abspath( __file__)).replace("view", "").replace("model", "") fontearquivo = os.path.join(fontearquivo, "lib") fontearquivo = os.path.join(fontearquivo, "FreeSansBold.ttf") self.fontetipo = 'comicsansms' self.botaoVoltar = Sprite("VOLTAR.png", 1, 2) self.botaoSalvar = Sprite("BOTAOPROX.PNG", 1, 2) self.maoCursor = Sprite("cursor.png", 1, 2) self.__janela = carrega_imagem("janela.png") self.__edit = carrega_imagem("edit.png") self.funcaoComando = list() self.temComandoSelecionado = False self.__janela2 = pygame.transform.scale( self.__janela, escalarXY(30, 30)) # self.__janela2 = pygame.transform.scale(self.__janela, escalarXY(escala, escala)) self.__tinta = carrega_imagem("tinta.png", "", 2) self.__corTelhado = Cores.TELHADO self.__executarButton = Sprite("executar.png", 1, 2) self.reiniciarbotao = Sprite("reiniciar.png", 1, 2) self.seta = Sprite("seta.png", 1, 2) self.seta2 = Sprite("seta.png", 1, 2) self._img3 = carrega_imagem("03.png", "blocos") self._img2 = carrega_imagem("02.png", "blocos") self._img1 = carrega_imagem("01.png", "blocos") self.lixo = Sprite("lixo.png", 1, 2) self.repetir = Sprite("repetir.png", 1, 2) self.corOpcao = Sprite("cor.png", 1, 2) self.funcaoOpcao = Sprite("funcao.png", 1, 2) self.funcaoOpcaoAtiva = False self.boxFuncao = pygame.Rect( escalarX(20), escalarY(175), escalarX(980), escalarY(100)) self.moverEsquerda = Sprite("BOTAOESQUERDA.png", 1, 2, 2) self.moverDireita = Sprite("BOTAODIREITA.png", 1, 2, 2) # self.lixo.definirPosicao((1150, 410)) self._img1 = pygame.transform.scale( self._img1, (int(self._img1.get_rect().w / 2), int(self._img1.get_rect().h / 2))) self._img2 = pygame.transform.scale( self._img2, (int(self._img2.get_rect().w / 2), int(self._img2.get_rect().h / 2))) # pygame.transform.rotate(self.__seta2.sheet, 180) self.seta2.sheet = pygame.transform.flip( self.seta2.sheet, True, False) self.__executarButton.definirPosicao((1040, 550)) self.botaoVoltar.definirPosicao((1080, 660)) self.botaoSalvar.definirPosicao((790, 660)) self.reiniciarbotao.definirPosicao((960, 25)) self.__boxExecucao = pygame.rect.Rect(escalar(20, 550, 1011, 100)) self.fontePequena = pygame.font.Font(fontearquivo, escalarX(12)) self.fonten = pygame.font.Font(fontearquivo, escalarX(17)) self.fontemedia = pygame.font.Font(fontearquivo, escalarX(25)) self.fonteg = pygame.font.Font(fontearquivo, escalarX(32)) self.fontexg = pygame.font.Font(fontearquivo, escalarX(52)) self.fontexxg = pygame.font.Font(fontearquivo, escalarX(150)) self.infoCriando = self.fonteg.render( "Utilize as ferramentas para pintar a casa que será o desafio da fase criada!", True, Cores.CORSECUNDARIA) self.infoCriando2 = self.fonteg.render( "Agora modifique o desenho para definir como a casa aparecerá inicialmente!", True, Cores.CORPRINCIPAL) self.back = carrega_imagem("back.png") self.exibeAviso = False self.mostrarEditBlRepetir = self.mostrarEditBlCor = False self.transparent = pygame.Surface( (self.__tela.largura, self.__tela.altura), pygame.SRCALPHA) self.exibindoTutorial = False self.opcaosempreTutorial = True self.checkbox = Sprite("boxon.png", 1, 2) self.botaoPularTutorial = Sprite("BOTAOPULAR.png", 1, 2) self.botaoEsquerda = Sprite("BOTAOESQUERDA.png", 1, 2) self.botaoDireita = Sprite("BOTAODIREITA.png", 1, 2) self.botaoEsquerda.definirPosicao((60, 350)) self.botaoDireita.definirPosicao((1220, 350)) self.botaoPularTutorial.definirPosicao((590, 650)) self.checkbox.definirPosicao((40, 640)) self.indexTutorial = 0 self.fndesenha = False self.destaque = False self.c3 = carrega_imagem("c3.png") self.textoaviso = "", "" # self.tituloaviso = "" self.desenharGuiaDesenhoBoolean = False self.guiDesenhoRect = pygame.rect.Rect(escalar(40, 320, 300, 200)) self.criando = self.finalizacriacao = False self.imgPincel = pygame.transform.rotate(carrega_imagem( "pincel" + str(1) + ".png", escala=2), 45) self.confete = Sprite("confete.png", 1, 59) self.confete2 = Sprite("confete.png", 1, 59) self.confete3 = Sprite("confete2.png", 1, 59) self.confete4 = Sprite("confete2.png", 1, 59) self.confete.definirPosicao((-100, 450)) self.confete2.definirPosicao((1100, 450)) self.confete3.definirPosicao((-100, -150)) self.confete4.definirPosicao((1100, -150)) self.confete.animacao = [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29] self.confete2.animacao = self.confete3.animacao = self.confete4.animacao = self.confete.animacao self.tempoAnGanhou = 0 self.fase = None self.contornoFase = Sprite("contorno4.png", 1, 2) # CORESEDICAO self.coresEdicao = list() self.coresEdicao.append(pygame.Rect( escalar(790 + self.__tela.ajuste, 115, 75, 75))) self.coresEdicao.append(pygame.Rect( escalar(700 + self.__tela.ajuste, 115, 75, 75))) self.coresEdicao.append(pygame.Rect( escalar(875 + self.__tela.ajuste, 30, 75, 75))) self.coresEdicao.append(pygame.Rect( escalar(790 + self.__tela.ajuste, 30, 75, 75))) self.coresEdicao.append(pygame.Rect( escalar(700 + self.__tela.ajuste, 30, 75, 75)))
def trocarimgPincel(self, num): if num >= 0: self.imgPincel = pygame.transform.rotate(carrega_imagem( "pincel" + str(num) + ".png", escala=2*ESCALAX), 45) else: self.imgPincel = carrega_imagem("janela.png", escala=2*ESCALAX)
def mover(self, comando, desenho, controller=None, comandofn=None): x = comando if x is not None: if self.rotacao < 0: self.rotacao += 360 if self.rotacao > 360: self.rotacao -= 360 if x.get_tipo() == "mover": SONS.MOVE.play() if self.rotacao == 90 and self.posicaoX < desenho.colunas - 1 and int( desenho.tiles[self.posicaoX + 1][self.posicaoY]) >= 0: self.posicaoX += 1 elif self.rotacao == 180 and self.posicaoY > 0 and int( desenho.tiles[self.posicaoX][self.posicaoY - 1]) >= 0: self.posicaoY -= 1 elif (self.rotacao == 360 or self.rotacao == 0) and self.posicaoY < desenho.linhas - 1 and \ int(desenho.tiles[self.posicaoX][self.posicaoY + 1]) >= 0: self.posicaoY += 1 elif self.rotacao == 270 and self.posicaoX > 0 and int( desenho.tiles[self.posicaoX - 1][self.posicaoY]) >= 0: self.posicaoX -= 1 elif x.get_tipo() == "esquerda": if self.rotacao == 270: if self.posicaoX > 0 and int( desenho.tiles[self.posicaoX - 1][self.posicaoY]) >= 0: self.posicaoX -= 1 SONS.MOVE.play() else: return False elif x.get_tipo() == "direita": if self.rotacao == 90: if self.posicaoX < desenho.colunas - 1 and int( desenho.tiles[self.posicaoX + 1][self.posicaoY]) >= 0: self.posicaoX += 1 SONS.MOVE.play() else: return False elif x.get_tipo() == "baixo": if (self.rotacao == 360 or self.rotacao == 0): if self.posicaoY < desenho.linhas - 1 and int( desenho.tiles[self.posicaoX][self.posicaoY + 1]) >= 0: self.posicaoY += 1 SONS.MOVE.play() else: return False elif x.get_tipo() == "cima": if self.rotacao == 180: if self.posicaoY > 0 and int( desenho.tiles[self.posicaoX][self.posicaoY - 1]) >= 0: self.posicaoY -= 1 SONS.MOVE.play() else: return False elif x.get_tipo() == "girar_esquerda": SONS.MOVE.play() self.image = pygame.transform.rotate(self.image, 90) self.rotacao += 90 elif x.get_tipo() == "girar_direita": SONS.MOVE.play() self.image = pygame.transform.rotate(self.image, -90) self.rotacao -= 90 elif x.get_tipo() == "pintar": SONS.PAINT.play() desenho.tiles[self.posicaoX][self.posicaoY] = self.cor elif x.get_tipo() == "selecionar_cor": SONS.COLORCHANGE.play() self.cor = x.get_Valor() self.image = pygame.transform.rotate( carrega_imagem("pincel" + str(self.cor) + ".png"), self.rotacao) elif x.get_tipo() == "repetir" and x.blocos is not None: c = True for j in range(0, x.get_Valor()): for bloc in x.blocos: if controller is not None: controller.refreshDesenho() c = self.mover(bloc, desenho) pygame.time.delay(100) else: c = self.mover(bloc, desenho) if not c: return c return c elif x.get_tipo() == "blocoF" and comandofn is not None: c = True for bloc in comandofn: if controller is not None: controller.refreshDesenho() c = self.mover(bloc, desenho) pygame.time.delay(100) else: c = self.mover(bloc, desenho) if not c: return c return c return True
def posicaoInicial(self): self.posicaoX = 0 self.posicaoY = 0 self.rotacao = 0 self.image = pygame.transform.rotate(carrega_imagem("pincel1.png"), 0) self.cor = 1
def getTutorials(): global tutoriais if tutoriais is None: tutoriais = list() t1 = carrega_imagem("t1.png") t2 = carrega_imagem("t2.png") t3 = carrega_imagem("t3.png") t32 = carrega_imagem("t3.2.png") tf = carrega_imagem("tf.png") tutoriais.append(tf) tutoriais.append(t1) tutoriais.append(t2) tutoriais.append(t3) tutoriais.append(t32) tutoriais.append(carrega_imagem("t4.png")) tutoriais.append(carrega_imagem("t5.png")) tutoriais.append(carrega_imagem("t6.png")) # tutoriais.append(carrega_imagem("t7.png")) tutoriais.append(carrega_imagem("t8.png")) tutoriais.append(carrega_imagem("t9.png")) tutoriais.append(carrega_imagem("t10.png")) tutoriais.append(carrega_imagem("t11.png")) tutoriais.append(carrega_imagem("t12.png")) tutoriais.append(carrega_imagem("t13.png")) tutoriais.append(carrega_imagem("t14.png")) tutoriais.append(carrega_imagem("t16.png")) tutoriais.append(carrega_imagem("t17.png")) return tutoriais