Postagens

Aprendendo a resolver problemas em programação

Imagem
  Neste tutorial bem simples, tento explicar como que faz pra "traduzir" um problema qualquer para código.  As pessoas que têm dificuldade com matemática sentem a mesma coisa quando vão aprender programação devido a diversos fatores mas principalmente a falta do hábito de raciocinar passo a passo e logicamente. Vc pode seguir dicas simples para lhe ajudar a abordar qualquer problema em programação, mas aqui eu estou indo do principio de que vc sabe pelo menos o esquema do PEMDAS em matemática. Se não sabe, ai fica impossível evoluir! Ainda farei um tutorial completo a respeito de como aprender ou melhorar em matemática, porque talento é uma mentira falsa que a sociedade criou pra falar de outras pessoas que apenas treinaram muito e por muito tempo até ficarem boas no que foram em vida, tipo Leonardo da Vinci, Mozart, etc. Se não acredita, continue na ilusão, já eu prefiro me esforçar estudando pra aprender. Segue as dicas de como abordar um problema para transformar em código...

SDL e programação de jogos - forças e movimento genérico em jogos de plataforma - parte 5.1

Imagem
Olá pessoa, let's arrochar o dedo no teclado, vulgo codar? Na aula passa que vc pode conferir aqui: SDL e programação de jogos - movimentação e separação de colisão Vamos pegar o último código que vc pode baixar aqui: Move e separa parte 2 Sigam-me os fodas, porque deles é que é o mundo real! Teoria sobre o novo código Vc viu que no último código a gente usou os valores para adicionar ou subtrair 5 pixels, porém, meu amigo, neste novo tutorial, vamos dar um senhor upgrade geral! Aqui no caso, vamos ter uma base de uma engine 2d de física. É muito código e pode ser que vc se perda um pouco, mas não se preocupe, vc pode se encontrar novamente virando a esquina mais próxima. Mas primeiro, vamos a teoria básica sobre: FìSICA em jogos! Muahaha Teoria: usando física básica em jogos É isso ai meu caro, nesta parte vamos precisar do conhecimento de física clássica, aquela do senhor Newton. Será com ela que vamos fazer um código genérico suficiente para poder ser usado...

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...