Suporte no desenvolvimento de jogos


    Lição 3 - Nossa primeira Classe - Uma Janela

    avatar
    Nothing
    Iniciante
    Iniciante

    Mensagens : 43
    Créditos : 8

    Lição 3 - Nossa primeira Classe - Uma Janela Empty Lição 3 - Nossa primeira Classe - Uma Janela

    Mensagem por Nothing em Qua Jan 05, 2011 8:06 am

    Antes de começar este tópico quero esclarecer que TODAS as apêndices que
    forem colocadas neste fórum só tem como finalidade referência, não
    sendo de necessidade explicar ou detalhar seu conteúdo.

    Na lição de hoje vamos criar nossa primeira classe.
    Abra o RPGMaker Xp e crie um novo projeto. Chame-o como quiser. Abra o Editor de Scripts, e logo acima do Main,
    insira uma sessão (botão direito -> Inserir). Nomeie-a como quiser. O
    nome das sessões é irrelevante, pois o RGSS lê o seu conteúdo, não seus
    nomes.

    Na janela do Editor escreva isso:
    Código:
    class Window_Minha < Window_Base
    Note que a palavras class está em minúsculas. TODO e qualquer código escrito no RGSS que se refira a funções, classes, módulos DEVE
    ser escrito em minúsculas. Mais tarde veremos que o RGSS é
    CASE-SENSITIVE (entraremos nos detalhes depois). Note também que estou
    definindo nossa classe como filha de Window_Base.

    Toda classe pré-inicializada possui como procedimento inicial o initialize. Então logo abaixo do class escreva isso:
    Código:
    def initialize

    Seu código deve estar assim:
    Código:
    class Window_Minha < Window_Base
            def initialize

    Agora vamos usar o procedimento de criação da superclasse, usando a
    palavra reservada super, e junto com ela os parâmetros necessários.
    PARÂMETROS???

    Sim, vamos ver a superclasse para entender isso:
    Lição 3 - Nossa primeira Classe - Uma Janela Image007
    Note que o initialize da classe Window_Base possui dentro dos parênteses
    4 vars, separadas por virgulas. Essas vars são os parâmetros, atravéz
    dos quais a classe cria a janela, usando seus valores logo abaixo nas
    declarações self. A palavra self sempre é usada quando falamos do
    próprio objeto, ou seja, relacionado a ele.

    Agora que sabemos pra que servem os parâmetros aqui, vamos voltar para nossa janela.
    logo abaixo do initialize escreva assim:
    Código:
    super(32,32,120,64)

    Eu peço que escreva e não copie e cole, para que você se habitue a escrever na janela do Editor.

    Seu código deve estar assim:

    Código:
    class Window_Minha < Window_Base
              def initialize
                    super(32,32,120,64)


    Para podermos visualizar nossa janela, devemos agora fechar as declarações. TUDO que for declarado no RGSS, Módulos, Classes, Funções deve ser fechado com a palavra end. Como temos uma classe e um procedimento abertos, vamos fechá-los. Escreva no código assim:

    Código:
    class Window_Minha < Window_Base
              def initialize
                    super(32,32,120,64)
              end
            end

    Agora rode o game. É, eu também gosto do ícone da espada. Repare que
    demos uma caminho de arquivo, no caso do bitmap basta dizer o caminho a
    partir da pasta do projeto.

    Até agora aprendemos que com a classe bitmap (Bitmap.new,
    declaração de classe, correto?) comporta tanto texto quanto e imagens.
    Ela também comporta os dois juntos, mas para isso, iremos precisar de
    outra classe e um módulo. MÓDULO ??

    Sim, um módulo é uma pré-definição, como a classe, porém ele não permite instâncias, você não declara @var = modulo.new como é feito com as classes, você chama MODULO::Procedimento. Os módulos serão estudados com mais ênfaze numa próxima lição, agora só veremos o necessário para o que precisamos.

    A classe que vamos precisar é o Rect, que significa
    retãngulo, a classe Rect cria uma área dentro do bitmap, onde podemos
    "desenhar" qualquer coisa. Sua definição é:

    Rect.new(x, y, largura, altura)

    Então vamos lá. Retorne a linha bitmap para o que era antes, assim:

    self.contents = Bitmap.new(width - 32, height - 32)

    Logo abaixo dela escreva assim:

    Código:

    icone = RPG::Cache.icon("001-Weapon01")
    rect = Rect.new(0, 0, icone.width, icone.height)



    Acabamos de declarar duas variáveis, uma com a imagem do ícone,
    onde usamos o módulo RPG::Cache e o procedimento icon, e o nome do
    arquivo. A extensão do arquivo é desnecessária, o RGSS gera um erro se a
    imagem não for suportada por ele.
    A outra contém nosso rect, que é exatamente do tamanho da imagem carregada na var icone.
    Agora usaremos mais uma função do self.contents, a função blt. A função blt vai desenhar dentro do rect a imagem que foi carregada na var icone, sua definição é essa:

    blt(x, y, bitmap,rect[,opacidade])


    Vamos lá. logo abaixo da declaração do rect, coloque isso:

    Código:
    self.contents.blt(0, 0, icone, rect)

    Descomente a linha self.contents.draw_text(4, 0, self.width - 40, 32, "nome", 0) e troque o numero 4 por icone.width + 4.

    Seu código deve estar assim:

    Código:
    class Window_Minha < Window_Base
              def initialize
                    super(32,32,120,64)
                self.contents = Bitmap.new(width - 32, height - 32)
                icone = RPG::Cache.icon("001-Weapon01")
                rect = Rect.new(0, 0, icone.width, icone.height)
                self.contents.blt(0, 0, icone, rect)
                self.contents.draw_text(icone.width + 4, 0, self.width - 40, 32, "nome", 0)
              end
              end

    Agora rode o game. Muito bom !!

    CONCLUSÂO:

    Começamos a ver hoje como criar uma janela, colocar texto e
    figuras. Demos uma leve pincelada nos módulos e nas funções internas da
    classe Window.
    Eu quero alertar que a partir de agora tanto as lições quanto os
    códigos começarão a ficar complexos, por isso, se você realmente tem
    interesse em aprender, faça perguntas concisas, programar em RGSS é
    muito fácil, mas depende principalmente de atenção e paciência.

    Não jogue fora o projeto com o Exemplo da janela, ele será útil
    na próxima lição, onde nos aprofundaremos nos procedimentos da classe,
    gerando novos resultados e alterações na janela.

    Eu farei uma apêndice destacando TODAS as funções das classes
    Window e Bitmap, para maior facilidade nas próximas lições.

    ruby brasil
    avatar
    loganout
    Novato
    Novato

    Mensagens : 22
    Créditos : 0

    Lição 3 - Nossa primeira Classe - Uma Janela Empty Re: Lição 3 - Nossa primeira Classe - Uma Janela

    Mensagem por loganout em Sex Set 02, 2011 10:09 am

    Não aconteceu nada Fury

    e o tutorial está incompleto, Acho q quem o colocou nem mesmo o leu Very Happy nas próximas aulas fala de coisas que vcê nem explicou anteriormente... fica difícil...

    Por favor reveja suas aulas, está faltando explicação nessa e mais a frente fala de NPC colocar codigo não sei aonde, não sei pra que, pq vc tbm não citou em nenhuma aula passado sobre esse tal de NPC

    flw!!!
    Hatsuki Morturo
    Hatsuki Morturo
    Experiente
    Experiente

    Mensagens : 401
    Créditos : 50

    Lição 3 - Nossa primeira Classe - Uma Janela Empty Re: Lição 3 - Nossa primeira Classe - Uma Janela

    Mensagem por Hatsuki Morturo em Ter Set 27, 2011 12:57 pm

    Na verdade não, ele falou que iria ensinar a criar uma janela, e ensinou, a janele está lá, mas quem deseja por algum outro conteúdo dentro, deve pesquisar um pouquinho até achar como por. Pois essa janela ai só tem a imagem de uma espada se não me engano.


    _________________
    Lição 3 - Nossa primeira Classe - Uma Janela Asd10

    Lição 3 - Nossa primeira Classe - Uma Janela Fabar10
    wallace123
    wallace123
    Aldeia Friend
    Aldeia Friend

    Medalhas : Lição 3 - Nossa primeira Classe - Uma Janela 94JxvLição 3 - Nossa primeira Classe - Uma Janela ICU4UuCrHDm5ALição 3 - Nossa primeira Classe - Uma Janela Ibnth6gSDk98m7Lição 3 - Nossa primeira Classe - Uma Janela ZgLkiRU
    Mensagens : 1161
    Créditos : 38

    Lição 3 - Nossa primeira Classe - Uma Janela Empty Re: Lição 3 - Nossa primeira Classe - Uma Janela

    Mensagem por wallace123 em Qua Set 28, 2011 2:23 am

    Podem me ajudar eu não vi onde ficou a janela Successful

    EDIT : Essas lições me ajudaram muito até aprendi a modificar golds iniciais Successful (o coisa besta (porém pra min era muito dificil kkk ))
    Nanzin
    Nanzin
    Membro de Honra
    Membro de Honra

    Mensagens : 1550
    Créditos : 252

    Lição 3 - Nossa primeira Classe - Uma Janela Empty Re: Lição 3 - Nossa primeira Classe - Uma Janela

    Mensagem por Nanzin em Qua Set 28, 2011 8:24 am

    cara, se era pra vce dar aula que desse direito, voce deveria tambem adicionar explicaao sobre a scene
    que ja imenda com Windows direto1;

    a scene seria que iria chamar a janela e ja a deixar no mapa, coisa que ai voce nao fez!;

    @loganout > cara paa voce chamar ajanela tera de ser manualmente crie um evento va na 3 aba e clique em chamar script digite isso Window_Minha.new
    ve se janela vai abrir!;

    braços


    _________________
    Lição 3 - Nossa primeira Classe - Uma Janela Npvo

    Para Aqueles que gostam de Min e de meu Trabalho;
    Upem Meu Pet nao custa nda!!


    Pet:
    Lição 3 - Nossa primeira Classe - Uma Janela 5886250
    Guilherme maker 2
    Guilherme maker 2
    Novato
    Novato

    Mensagens : 25
    Créditos : 4

    Lição 3 - Nossa primeira Classe - Uma Janela Empty Re: Lição 3 - Nossa primeira Classe - Uma Janela

    Mensagem por Guilherme maker 2 em Qua Jan 18, 2012 5:17 pm

    @Nanzin escreveu:cara, se era pra vce dar aula que desse direito, voce deveria tambem adicionar explicaao sobre a scene
    que ja imenda com Windows direto1;

    a scene seria que iria chamar a janela e ja a deixar no mapa, coisa que ai voce nao fez!;

    @loganout > cara paa voce chamar ajanela tera de ser manualmente crie um evento va na 3 aba e clique em chamar script digite isso Window_Minha.new
    ve se janela vai abrir!;
    braços

    cara ajudou muito

    Conteúdo patrocinado

    Lição 3 - Nossa primeira Classe - Uma Janela Empty Re: Lição 3 - Nossa primeira Classe - Uma Janela

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qua Jan 29, 2020 3:07 am