Postagens

Mostrando postagens de março, 2026

SDL e programação de jogos - melhor movimentação e separação da colisão - parte 4

Imagem
Como vimos na última aula ( SDL-e-programação-de-jogos-detecção-de-colisão ) criamos uma função simples de detectar colisão entre dois retângulos SDL_Rect. Neste novo tutorial, vamos ver os procedimentos para separar um retângulo de dentro do outro e também como melhorar a movimentação. Sigam-me os maus porque deles serás o avião de batalha nos céus! Melhorando a movimentação do player Primeiro, pra poder separar os retângulos, devemos desacomplar ainda mais a lógica dos eventos da lógica de movimentação. Veja no código da aula passada tem o seguinte código que faz mover o retângulo do player: //loop principal while (!fim) { //loop de eventos //novo loop de eventos while (SDL_PollEvent(&evento)) { //verifica se clicou em fechar if (evento.type == SDL_QUIT) fim = 1; //verifica se a tecla pra baixo foi apertada if (evento.type == SDL_KEYDOWN) { if (evento.key.keysym.sym == SDLK_DOWN) { //move o player pra...

SDL e programação de jogos - detecção de colisão - parte 3

Imagem
Caso vc não tenha visto a parte 2, aqui o link: SDL-e-programacao-de-jogos-parte-2 Introdução Pra quem não sabe, todo jogo usa algoritmos de detecção de colisão e separação de objetos. Esse é um assunto bem amplo (e complexo!) mas neste post vc aprenderá o básico: vc vai aprender a como detectar colisão entre dois retângulos vc vai aprender a como separar um retângulo de dentro um do outro Algoritmo básico: bounding boxes! O algoritmo de detectar se dois retãngulos estão colidindo é o bounding boxes! É um dos algoritmos mais fáceis de aprender e também um dos mais fáceis de entender! Veja abaixo como ele funciona: pegue um retângulo e chame-o de rectA pegue outro retângulo e chame-o de rectB se a posição da lateral direita do rectA é MAIOR ou igual a posição da lateral ESQUERDA de rectB, então, continue para passo 4, senão, não é colisão se a posição da lateral esquerda do rectA é menor ou igual a posição da lateral DIREITA de rectB, então, contin...

SDL e programação de jogos parte 2

Imagem
Caso vc não tenha visto, aqui o link pra parte 1: SDL e jogos parte 1 Neste post, veremos como mover pela tela um retângulo simples, além de desenhar na janela com o renderer. Para fazer isso, vamos primeiro ver como criar o loop principal e aprender sobre funções de desenhar na tela, veja abaixo: O código acima não faz nada de muito útil, mas podemos melhorar, veja: #include <SDL2/SDL.h> #include <stdio.h> int main() { SDL_Init(SDL_INIT_VIDEO); //100 posição horizontal em pixels dentro do seu monitor do canto esquerdo superior para direita //150 posição vertical em pixels dentro do seu monitot do canto esquerdo superior pra baixo //640 é a largura da janela em pixel //480 é a altura da janela em pixel SDL_Window * janela = SDL_CreateWindow("loops e jogos", 100,150,640,480, SDL_WINDOW_OPENGL); SDL_Renderer * renderer = SDL_CreateRenderer(janela, -1, SDL_RENDERER_ACCELERATED); SDL_Event evento; int fim = 0; //loop principal whi...

SDL e programação de jogos parte 1

Imagem
Neste post vc verá um pouco sobre programação de jogos com SDL2. SDL2 como começar programar jogos? Tudo que vc precisa saber no momento é que no SDL2 temos este código básico: #include <SDL2/SDL.h> #include <stdio.h> int main() { SDL_Init(SDL_INIT_VIDEO); //resto do seu jogo aqui SDL_Quit(); return 0; } SDL_Init(SDL_INIT_VIDEO); --inicializa o SDL com o subsistema de vídeo (parâmetro SDL_INIT_VIDEO) SDL_Quit(); --finaliza o SDL e libera a memória da lib. Deve ser chamada DEPOIS de fechar tudo do jogo. O código acima não faz nada de muito útil, mas podemos melhorar, veja: #include <SDL2/SDL.h> #include <stdio.h> int main() { SDL_Init(SDL_INIT_VIDEO); SDL_Window * janela = SDL_CreateWindow("Janela de exemplo na posição inicial 100x100 com tamanho 640x480", 100,100,640,480, SDL_WINDOW_OPENGL); SDL_Renderer * renderer = SDL_CreateRenderer(janela, -1, SDL_RENDERER_ACCELERATED); //resto do seu jogo aqui //abaixo faz paralis...

Como criar jogos de nintendinho?

Imagem
 Segue um vídeo sobre como criar um jogo de NES em C: Só um complemento: As ferramentas usadas são essas: --compilador cc65: https://github.com/cc65/cc65 Essa é a versão usada: https://github.com/cc65/cc65/releases/tag/V2.13.3 --neslib: https://github.com/clbr/neslib/ Projeto Usado: https://www.mediafire.com/file/jpcba39hmv1j566/Nes+c.rar/file Como compilar o código no Linux? O compilador usado no vídeo tem um sério problema que ele é uma versão antiga do cc65 (versão 2.13) e por isso, nas versões mais recentes pode dar erro na linkagem mas compilar sem problema. Pra resolver isso siga os passos: Pegando uma versão mais atual do neslib: 1--instale o compilador cc65 (para Debian e derivados) $ sudo apt install cc65 gcc build-essentials Execute no terminal cc65 --version pra mostrar qual versão está instalada. Estou no Ubuntu 20.04 e meu cc65 é a versão 2.18-1 2--baixe o neslib mais atual deste repositório:  https://github.com/nesdoug/01_Hello  esse é um projeto melhorado p...

Tutorial programação de jogos com SDL1.2

  https://www.vivaolinux.com.br/artigo/Programacao-de-Jogos-com-SDL/ Mais um do Old But Gold! Neste tutorial vc aprende a programar alguns pequenos jogos em SDL1.2. A biblioteca hoje em dia tá abandonada essa versão mas ainda dá pra usar pra estudos. Em breve vou lançar um update deste e de outros tutoriais, aguardem!

Tutorial SDL1.2

  https://www.vivaolinux.com.br/artigo/Tutorial-SDL/ Este foi um dos primeiros tutoriais que escrevi, tá pra lá de velho mas ainda vale a pena a leitura! Ainda pretendo ecrever um update para SDL2, mesmo que a versão 2 já esteja ficando abandonada e trocada pela SDL3.

Tutoriais old que valem gold!

  https://www.vivaolinux.com.br/artigo/Dicas-para-aprender-programacao/ Esse é um tutorial que escrevi a um tempo atrás. As dicas contidas nele ainda uso e são de grande ajuda pra os alunos que tenho. Em geral são fáceis de entender mas dificeis de aplicar sozinho.  É muito mais fácil se houver um grupo de estudos entre amigos.  De qualquer forma, vale a pena a leitura!

Códigos legais em C parte 2

  https://www.vivaolinux.com.br/script/Agenda-Telefonica-Simples-em-C/ Neste outro link temos um código de uma agenda telefônica simples, tudo via terminal. O código segue o padrão CRUD (Create, Read, Update, Delete) que é um padrão bem conhecido do pessoal do backend. Com esta agenda vc pode aprender comandos mais na prática do que apenas em teoria furada. Bons estudos!

Códigos legais em C puro parte 1

  https://www.vivaolinux.com.br/script/Jogo-do-Labirinto-no-Terminal/ Neste link, tem um código de um jogo que fiz num passado distante. Vc pode ver ele e estudar, tá lotado de comentários. Sugiro que vc comece lendo o código no main e vá seguindo função por função. É tudo bem simples. Divirta-se!

Site para treinar cálculo de expressões

No site:  https://gemah.onrender.com  vc pode acessar um gerador de contas, é o que uso com meus alunos e é um projeto meu. Vc pode gerar contas baseadas em certos assuntos, como por exemplo expressão com ou sem parênteses, com ou sem expoentes, etc. Ali onde tem o botão "Treino de Expressões em N e Z" é o gerador principal. Mais em baixo vc pode ver que eu fiz outros geradores ara treinar código em C mas esse é bem basicão, então, pode ser que não seja adequado pra muitos por ser bem fácil de entender, mas serve como pontapé inicial. Ainda estou melhorando tais geradores porque meu pai faz uso deles e então de vez em quando corrijo bugs e atualizo tudo. De qualquer forma, são ferramentas boas para estudo de matemática básica e pra quem deseja ir além das continhas merdas da escola pública! Arrocha!

Em breve novidades!

 Postagem inicial sobre este blog. Pretendo neste blog criar conteúdo voltado para aprendizagem de matemática e programação em C. Muito em breve, trarei novidades. Aguardem!