Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Lucas Assunção de Sousa

Membros Plenos
  • Total de itens

    28
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

22

Informações gerais

  • Cidade e Estado
    Lins/SP
  • Sexo
    Masculino
  1. Então, eu tentei aplicar a minha nova lógica, mas não funcionou. Tentei separar por if/else if e também por um if só, mas não está indo. Quando fiz usando apenas uma condição (no caso checando seu a string tinha uma letra P) substituía por x. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); char linha[100]; char linha2[100]; int l; puts("Língua do P"); puts(""); printf("Digite a frase: "); fgets(linha, 100, stdin); for(l = 0; l < 100; l++) { if((toupper(linha[l]) != 'P' && toupper(linha[l + 1]) != 'Q') && toupper(linha[l]) != 'R' || linha[l] != ' ') { linha2[l] = linha[l]; } } printf("frase: %s", linha2); return 0; }
  2. Entendi, um não trabalhei muito usando strings em C. Basicamente só foi uma semana de aprendizado e pulamos pro próximo assunto, mas eu entendi. Eu estou usando apenas uma variável como entrada de dados que vai exibir a frase que o usuário vai digitar, nesse caso como eu não consigo deletar e estou apenas substituindo por um espaço vazio, talvez a melhor solução seria então ter uma segunda variável que receba os caracteres diferentes de porque, R e vazio e jogá-los nessa segunda string. Ai então a segunda variável vai imprimir a frase certinho... Acho que entendi, vou tentar isso!
  3. Bem isso foram problemas passados numa maratona de programação que eu participei e quis refazê-los para poder praticar. Basicamente o que o @devair1010 deu "certo", pois faltou retornar a variável p.
  4. Estou fazendo um programa que ao digitar uma frase, caso tenha as letras "porque" juntas ou só "R" essa palavra seja deletada e o cursor volte as casas. Pois ao digitar "PQa" ao invés de simplesmente mudar ficar " a" teria que ficar "a" como inicio da frase. Aqui está o meu código: #include <stdio.h> #include <stdlib.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); char linha[100]; int l; puts("Língua do P"); puts(""); printf("Digite a frase: "); fgets(linha, 100, stdin); for(l = 0; l < 100; l++) { if(linha[l] == 'P' && linha[l + 1] == 'Q') { linha[l] = ' '; linha[l + 1] = ' '; } else if(linha[l] == 'R') { linha[l] = ' '; } } printf("frase: %s", linha); }
  5. Boa tarde! estou fazendo um jogo em Java de uma simples batalha em RPG em turnos: Onde é você vs um CPU em OO. Estou usando a mesma classe para serem o jogador e o inimigo ao mesmo tempo e as duas tem o método ataque e recebe dano. Entretanto quando um testo e ataco, tanto o jogador e o adversário recebem dano a mesma quantidade de dano, fora além de não seguir a condição de morte que eu coloquei. Aqui está o meu código: Classe. import java.util.Random; class Personagem extends Atributos { //ATRIBUTOS public static String nome; public static String classe; public static int defesa; public static int critico; public static int danoMinimo; public static int danoMaximo; public static int healthPoints; public static int manaPoints; //CONSTRUTOR public Personagem () { this.nome = ""; this.classe = "Mago"; this.vitalidade = 10; this.armadura = 10; this.forca = 10; this.inteligencia = 10; this.agilidade = 10; this.sorte = 10; this.defesa = 10 + this.armadura; this.critico = this.sorte / 100; this.healthPoints = 100; this.manaPoints = 100; this.danoMinimo = 10; this.danoMaximo = 20; } //SETTERS public void setNome (String nome) { this.nome = nome; } public void setClasse (String classe) { this.classe = classe; } public void setDefesa (int defesa) { this.defesa = defesa; } public void setCritico (int critico) { this.critico = critico; } public void setHealthPoints (int healthPoints) { this.healthPoints = healthPoints; } public void setManaPoints (int manaPoints) { this.manaPoints = manaPoints; } public void setDanoMinimo (int danoMinimo) { this.danoMinimo = danoMinimo; } public void setDanoMaximo (int danoMaximo) { this.danoMaximo = danoMaximo; } //GETTERS public String getNome () { return this.nome; } public String getClasse () { return this.classe; } public int getDefesa () { return this.defesa; } public int getCritico () { return this.critico; } public int getHealthPoints () { return this.healthPoints; } public int getManaPoints () { return this.manaPoints; } public int getDanoMinimo () { return this.danoMinimo; } public int getDanoMaximo () { return this.danoMaximo; } public void Ataque (Personagem inimigo) { Random rand = new Random(); int ataque; ataque = rand.nextInt(this.danoMaximo) + this.danoMinimo; inimigo.healthPoints = ataque - inimigo.defesa; } public void recebeDano (Personagem inimigo ,int ataque) { this.healthPoints = ataque - defesa; } } Programa principal: import java.util.Scanner; import java.util.Random; class Partida { static Scanner scanf = new Scanner(System.in); static Random rand = new Random(); static Personagem jogador = new Personagem(); static Personagem inimigo = new Personagem(); public static void main(String[] args) { Introducao(); telaPersonagem(); chamaTurno(); jogadorTurno(); cpuTurno(); vitoria(); } public static void Introducao () { System.out.println("SEJA BEM-VINDO A ARENA, GUERREIRO! DIGA-NOS SEU NOME: "); jogador.setNome("LUCAS"); inimigo.setNome("LUCAS"); } public static void telaPersonagem() // MOSTRA A TELA COM INFORMAÇÕES DOS PERSONAGENS { System.out.println("NOME: " + jogador.getNome() + " NOME:" + inimigo.getNome()); System.out.println("HP: " + jogador.getHealthPoints() + " HP: " + inimigo.getHealthPoints()); System.out.println("MP: " + jogador.getManaPoints() + " MP: " + inimigo.getManaPoints()); } public static void chamaTurno() { int jogadorAgi; int cpuAgi; do { jogadorAgi = rand.nextInt(1) + jogador.getAgilidade(); cpuAgi = rand.nextInt(1) + inimigo.getAgilidade(); if(jogadorAgi > cpuAgi) { jogadorTurno(); } else { } } while(jogadorAgi != cpuAgi); } public static void jogadorTurno() { int acao; do { System.out.println("SEU TURNO"); System.out.println(""); System.out.println("Escolha uma acao"); System.out.println("1 - Atacar"); System.out.println("2 - Atacar forte"); System.out.println("3 - Atacar FORTE MESMO"); acao = scanf.nextInt(); switch(acao) { case 1 : jogador.Ataque(inimigo); System.out.println("Ataque realizado com sucesso"); telaPersonagem(); chamaTurno(); break; default : System.out.println("Digite um comando valido"); } } while(jogador.healthPoints != 0 || jogador.healthPoints < 0); } public static void cpuTurno() { int acao; acao = rand.nextInt(1) + 3; System.out.println("TURNO INIMIGO"); do { switch (acao) { case 1: inimigo.Ataque(jogador); System.out.println("Você e atacado com sucesso"); chamaTurno(); break; case 2: inimigo.Ataque(jogador); System.out.println("Você e atacado com sucesso"); chamaTurno(); break; case 3: inimigo.Ataque(jogador); System.out.println("Você e atacado com sucesso"); break; } } while(inimigo.healthPoints != 0 || inimigo.healthPoints <= 0); } public static void vitoria() { if(jogador.healthPoints == 0) { System.out.println("voce perdeu!"); } if(inimigo.healthPoints == 0) { System.out.println("voce venceu!"); } } } Alguém sabe o que estou fazendo de errado? Obrigado!
  6. Boa noite! Estou começando a ver programação orientada a objetos em Java (antes estava nas estruturadas). Minhas principais dúvidas são a respeito das terminologias e da organização do código que ainda não peguei muito bem. import java.util.Scanner; public class usuario { private String nome; private String email; private String login; private String senha; private double media; public usuario () { this("","","",""); } public usuario (String nome, String email, String login, String senha) { this.nome = nome; this.email = email; this.login = login; this.senha = senha; } //Setters public void setNome(String nome) { this.nome = nome; } public void setEmail(String email) { this.email = email; } public void setLogin(String login) { this.login = login; } //Getters public String getNome() { return this.nome; } public String getEmail() { return this.email; } public void setSenha(String senha) { this.senha = senha; } public String getLogin() { return this.login; } public String getSenha() { return this.senha; } public void provarExistencia() { System.out.println("Oi, eu existo"); } public void setMedia(double media) { this.media = media; } public double getMedia() { return this.media; } public void testaMedia(double media) { if(this.media >= 6) { System.out.println("Media: " + this.media); System.out.println("APROVADO"); } else { System.out.println("Media: " + this.media); System.out.println("REPROVADO"); } } } Essa daqui séria então a classe objeto que possui todos os dados a serem pegos. Eu terminei programação estruturada vendo muito pouco a respeito de funções, então me corrijam se eu estiver errado, mas programação orientada a objetos possui muita modularização? Seria correto afirmar que são funções dentro de funções? class Exemplo1 { public static void main (String[] args) { usuario usuario1 = new usuario(); Scanner scanf = new Scanner(System.in); usuario1.setNome("Lucas"); usuario1.setEmail("lucasassuncao.98@gmail.com"); usuario1.setLogin("Tecnologgamer"); usuario1.setSenha("27031998"); usuario1.setNome() = scanf.nextLine(); usuario1.setEmail() = scanf.nextLine(); usuario1.setLogin() = scanf.nextLine(); usuario1.setSenha() = scanf.nextLine(); } } Por último eu queria saber onde eu errei nesse momento onde eu estava tentando pegar os valores de entrada, mas deu erro de compilação. Qual seria o jeito certo de atribuir um valor de entrada?
  7. Obrigado @devair1010 Eu consegui resolver, extremamente agradecido!
  8. Ai, consegui resolver o problema, entretanto: struct embarcacoes { int submarino; int destroyer; int hidro_aviao; int porta_aviao; }; typedef struct embarcacoes barcos; barcos qt_barcos = {3, 3, 2, 2}; int total_de_barcos = 10; struct almirante { char nome[100]; int placar; int disparos; struct embarcacoes; }; struct almirante jogador; void imprime_portaaviao () { int l, c, direcao; do { direcao = rand() % 2; l = 1 + (rand() % TAMANHO); c = 1 + (rand() % TAMANHO); if(direcao == 0) { if((l == TAMANHO || l >= TAMANHO - 4)) { if(arena_inimigo[l][c] == AGUA && arena_inimigo[l - 1][c] == AGUA && arena_inimigo[l - 2][c] == AGUA && arena_inimigo[l - 3][c] == AGUA && arena_inimigo[l - 4][c] == AGUA) for(i = l; i < l + 4; i++) { arena_inimigo[i - 4][c] = PORTAAVIAO; } } else { if(arena_inimigo[l][c] == AGUA && arena_inimigo[l + 1][c] == AGUA && arena_inimigo[l + 2][c] == AGUA && arena_inimigo[l + 3][c] == AGUA && arena_inimigo[l + 4][c] == AGUA) for(i = l; i < l + 4; i++) { arena_inimigo[i][c] = PORTAAVIAO; } } } else { if(c == TAMANHO || c >= TAMANHO - 4) { if(arena_inimigo[l][i] == AGUA && arena_inimigo[l][c - 1] == AGUA && arena_inimigo[l][c - 2] == AGUA && arena_inimigo[l][c - 3] == AGUA && arena_inimigo[l][c - 4] == AGUA) for(i = c; i < c + 4; i++) { arena_inimigo[l][i - 4] = PORTAAVIAO; } } else { if(arena_inimigo[l][i] == AGUA && arena_inimigo[l][c + 1] == AGUA && arena_inimigo[l][c + 2] == AGUA && arena_inimigo[l][c + 3] == AGUA && arena_inimigo[l][c + 4] == AGUA) for(i = c; i < c + 4; i++) { arena_inimigo[l][i] = PORTAAVIAO; } } } qt_barcos.porta_aviao--; } while (qt_barcos.porta_aviao != 0); } Entretanto para evitar que as embarcações se colocassem em cima de outras, eu fiz essa condição longa, e ela às vezes não imprime todas as partes do porta avião. O que pode estar errado?
  9. @devair1010 Poderia me explicar o que está acontecendo? Eu estou tentando fazer com que as embarcações que tenham mais unidades não possam sair dos extremos ou que sejam colocados além dos extremos, mas não está indo. O que pode tá acontecendo de errado? void imprime_portaaviao () { int l, c, direcao; do { direcao = rand() % 2; l = 1 + (rand() % TAMANHO); c = 1 + (rand() % TAMANHO); do { if(direcao == 0) { for(i = l; i < l + 4; i++) { arena_inimigo[i][c] = PORTAAVIAO; qt_barcos.porta_aviao--; total_de_barcos--; } } else { for(i = c; i < c + 4; i++) { arena_inimigo[l][i] = PORTAAVIAO; qt_barcos.porta_aviao--; total_de_barcos--; } } } while ((l >= 1 && l <= TAMANHO) && (c >= 1 && c <= TAMANHO)); } while (qt_barcos.porta_aviao == 0); } Basicamente estou tentando impedir que a fila de "P's saiam do limite da linha e do limite da coluna, mas nem isso está adiantando.
  10. @devair1010 Obrigado pela ajuda, acho que eu notei porque nem todos estão sendo impressos, a condição que eu coloquei antes de alocar na matriz para segurar que as embarcações não sejam colocadas em cima das outras, vou tentar achar uma outra maneira de checar isso antes de alocar. Obrigado!
  11. Boa tarde, Estou trabalhando em um jogo de Batalha Naval e estou tendo dificuldades na hora de alocação dos barcos. Basicamente as embarcações possuem mais de uma unidade na matriz (com exceção do submarino que é apenas uma) e são alocadas tanto na vertical quanto na horizontal (exemplo o portão avião, pode ser tanto em "PPPP" ou "P P P P" Para isso eu sorteio um número que define a direção da posição, se for 0 é horizontal, se for 1 é vertical, mas não está sendo alocado. Esse é o código que escrevi, alguém sabe o que tem de errado? Grato! #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <windows.h> #include <time.h> #define AGUA '~' #define ERRO 'X' #define TAMANHO 11 #define SUBMARINO 'S' #define DESTROYER 'D' #define HIDROAVIAO 'H' #define PORTAAVIAO 'P' char arena[TAMANHO][TAMANHO], arena_inimigo[TAMANHO][TAMANHO]; int linha, coluna; struct embarcacoes { int submarino; int destroyer; int hidro_aviao; int porta_aviao; }; typedef struct embarcacoes barcos; barcos qt_barcos = {3, 3, 2, 2}; struct almirante { char nome[100]; int placar; int disparos; struct embarcacoes }; struct almirante jogador; void prepara_tabuleiro () { int l, c; for(l = 1; l < TAMANHO; l++) { for(c = 1; c < TAMANHO; c++) { arena_inimigo[l][c] = AGUA; arena[l][c] = AGUA; } } } int imprime_submarino () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 1; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = SUBMARINO; return 0; } } } else { for(c = 0; c < c + 1; c++) { arena_inimigo[l][coluna] = SUBMARINO; return 0; } } } while(qt_barcos.submarino != 0); } int imprime_destroyer () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 2; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = DESTROYER; return 0; } } } else { for(c = 0; c < c + 2; c++) { arena_inimigo[l][coluna] = DESTROYER; return 0; } } } while(qt_barcos.destroyer != 0); } int imprime_hidroaviao () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 3; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = HIDROAVIAO; return 0; } } } else { for(c = 0; c < c + 3; c++) { arena_inimigo[l][coluna] = HIDROAVIAO; return 0; } } } while(qt_barcos.hidro_aviao != 0); } int imprime_portaaviao () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 4; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = PORTAAVIAO; return 0; } } } else { for(c = 0; c < c + 4; c++) { arena_inimigo[l][coluna] = PORTAAVIAO; return 0; } } } while(qt_barcos.porta_aviao != 0); } void imprimeTabuleiro () { int l, c; for(l = 1; l < TAMANHO; l++) { for(c = 1; c < TAMANHO; c++) { printf(" \t%c", arena[l][c]); } printf("\n"); } } int controles () { int vida_inimiga; int l, c; jogador.disparos = 999; vida_inimiga = 36; do { //Exibe principais informações na tela printf("Almirante %s\n", jogador.nome); printf("Disparo Restantes: %i/46\n", jogador.disparos); printf("Vida Inimiga: %i/36\n\n", vida_inimiga); printf("Informe a linha: "); scanf("%i", &l); printf("Informe a coluna: "); scanf("%i", &c); printf("\n"); if(l >= 1 && l < TAMANHO && c >= 1 && c < TAMANHO && arena_inimigo[l][c] == AGUA) { switch(arena_inimigo[l][c]) { case AGUA: arena[l][c] = ERRO; system("cls"); imprimeTabuleiro(); jogador.disparos--; printf("Errou\n"); break; case SUBMARINO: arena[l][c] = 'S'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou!\n"); break; case HIDROAVIAO: arena[l][c] = 'H'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou!\n"); break; case DESTROYER: arena[l][c] = 'D'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou!\n"); break; case PORTAAVIAO: arena[l][c] = 'P'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou\n"); break; default: printf("ErrROU!\n"); } } if(vida_inimiga == 0) { system("cls"); puts("FIM DO JOGO"); puts("VOCÊ VENCEU!"); puts(""); jogador.placar = jogador.placar + 1; printf("Jogador: %s\nPlacar: %i", jogador.nome, jogador.placar); puts(""); getchar(); exit(1); } if(jogador.disparos == 0) { system("cls"); puts("FIM DO JOGO"); puts("VOCÊ PERDEU"); jogador.placar = jogador.placar + 0; printf("Jogador: %s\nPlacar: %i", jogador.nome, jogador.placar); puts(""); getchar(); exit(1); } } while (vida_inimiga != 0 && jogador.disparos != 0); } int main () { setlocale(LC_ALL,"Portuguese"); prepara_tabuleiro(); imprime_submarino(); imprime_destroyer(); imprime_hidroaviao(); imprime_portaaviao(); imprimeTabuleiro(); controles(); getch(); return 0; }
  12. @devair1010 Obrigado por responder! Bem, após pesquisar bastante sobre referências na internet eu acabei achando um que tinha essa função que fazia exatamente o que quero. Tudo parece funcionar de perfeita maneira, entretanto eu não estou conseguindo alocar numa matriz principal que é exibida na tela, ou seja, é uma arena vazia em que o jogador tá atirando. Como o código é bastante grande e está separado em várias funções, resolvi colocar ele pra baixar do que colocar aqui. SinglePlayer.rar
  13. Olá à todos! Estou com uma dúvida sobre o raciocínio de como elaborar um código: Tempos atrás algumas gentis pessoas me ajudaram a corrigir meu jogo de Batalha Naval E estou numa fase que agora estou tentando melhorar o código dele, e uma das coisas que queria fazer desde o começo é que e não estou conseguindo terminar o raciocínio é colocar as embarcações de modo aleatório na arena. Meu pensamento se resume a eu tentar criar uma função que sorteia ou número 1 e 2, caso de 1 imprime ele em posição vertical e 2 na horizontal da arena. Porém, outro problema que é encontro é que são algumas embarcações com um porta-aviões, possui mais de um na arena, e cada um deles precisa ter 3 espaços. E são nessas partes eu travo e não consigo mais pensar.
  14. Como você não falou o que o programa faz, deu a entender que você realiza a checagem de dois valores e eles não estão imprimindo de maneira certa, apenas lixo de memória. Eu fiz uma versão minha desse programa: #include <stdio.h> #include <stdlib.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); int sorteado[6], aposta[6], cont, acertos[6]; cont = 0; puts("Informe os números sorteados"); for(cont = 0; cont < 6; cont = cont + 1) { scanf("%i", &sorteado[cont]); } puts("Informe os números da aposta"); for(cont = 0; cont < 6; cont = cont + 1) { scanf("%i", &aposta[cont]); } for(cont = 0; cont < 6; cont = cont + 1) { if(sorteado[cont] == aposta[cont]) { acertos[cont] = aposta[cont]; } } puts("Números sorteados"); for(cont = 0; cont < 6; cont = cont + 1) { printf("%i\n\n", sorteado[cont]); } puts("Números acertados"); for(cont = 0; cont < 6; cont = cont + 1) { printf("%i\n", acertos[cont]); } } A minha versão funciona certa se os números forem colocados em ordem (6,5,4,3,2,1...) O que poderia resolver esse problema é que antes de realizar a checagem seria organizar os dois vetores em ordem para depois realizar a checagem.
  15. Olá a todos! Estou começando a estudar OpenGL e estou seguindo a apostila fornecida pelo meu professor, porém estou com um problema. No momento que adicionei as funções para fazer com o desenho (um triângulo vermelho) não sofra mudanças em suas dimensões após a janela ser alterada, mas mesmo assim ainda não funciona, mesmo dando rebuild no projeto. #include <windows.h> #include <gl/glut.h> int altura, largura; //Função que for chamada sempre que for preciso para desenhar na tela void desenha(void) { //Limpa a janela de visualização glClearColor(1.0f,1.0f,1.0f,0.0f); //Especifica a cor da tela de fundo para branco glClear(GL_COLOR_BUFFER_BIT); //Define a cor do desenho como vermelho glColor3f(1,0,0); //Desenha o triângulo glBegin(GL_TRIANGLES); glVertex2f(-15.0f,-7.0f); glVertex2f(0.0f,7.0f); glVertex2f(15.0f,-7.0f); glEnd(); glFlush(); //Executa os comandos OpenGL } //Função que inicializa o ambiente de trabalho void inicializacao() { //Dimensões do viewport glViewport(0,0,largura,altura); //Define a janela de visualização 2D glMatrixMode(GL_PROJECTION); gluOrtho2D(-20.0f,20.0f,-10.0f,10.0f); glMatrixMode(GL_MODELVIEW); } //Redesenha a janela void AlteraTamanhoJanela(GLsizei w, GLsizei h) { //Evita divisão por zero if(h == 0) { h = 1; } if(w == 0) { w = 1; } largura = w; altura = h; //Dimensões da ViewPort glViewport(0,0,largura, altura); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //Estabelece Janela de Seleção if(largura <= altura) { gluOrtho2D(-20.0f, 20.0f,-10.0f * altura / largura, 10.0f * altura / largura); } else { gluOrtho2D(-20.0f * altura / largura, 20.0f * altura / largura, -10.0f, 10.0f); } glMatrixMode(GL_MODELVIEW); } //Função que sempre for pressionada uma tecla ASCII void teclado(unsigned char tecla, int x, int y) { if(tecla == 27) //Se pressionou tecla ESC, sai do programa { exit(0); } } //Programa principal int main(void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); //Modo de exibição da GLUT glutInitWindowSize(600,400); //Tamanho inicial em pixel da janela GLUT glutInitWindowPosition(100,100); //Posição Inicial da janela glut glutCreateWindow("Trabalho de Programação II - OpenGL"); //Título da janela glutDisplayFunc(desenha); //Registra a função de redesenho a tela glutReshapeFunc(AlteraTamanhoJanela); //Função para redesenhar glutKeyboardFunc(teclado); //Registra a função para tratamento de teclas inicializacao(); glutMainLoop(); //Inicia o processamento e aguarda interações do usuário return 0; } TrabalhoOpenGL.rar

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×