Algumas Implementações de Primitivas com Allegro

Pessoal… depois de bastante tempo, resolvi postar um código com algumas implementações das primitivas do Allegro. Eu fiz isso há bastante tempo, se o Windows está mostrando a data certa do arquivo, isso é do começo de março (nem imaginava que era tanto tempo assim)!

Era um dia chato, sem nada para fazer, então resolvi brincar com o Allegro… xD

#include
#include

void init();
void deinit();
BITMAP *makeFundoCircle();
BITMAP *makeFundoLine();
BITMAP *makePlayer();
BITMAP *makeCursor();

int main() {
init();

BITMAP *fundo[2];
fundo[0] = makeFundoLine();
fundo[1] = makeFundoCircle();
BITMAP *buffer = create_bitmap(640, 480);
BITMAP *cursor = makeCursor();
BITMAP *obj = create_bitmap(50, 50);
BITMAP *player = makePlayer();

int x = 0, y = 0, v = 0;
int t = 0;
int b = 0;

int mx, my;
int mm;

int ox = 30, oy = 30;
int om = 0;
int omx, omy;

int cr, cg, cb;

int cc = 0, ca = 0;

int px = 300, py = 220;

int f = rand() % 2;
int ff = 0;

clear_to_color(obj, makecol(rand()%255, rand()%255, rand()%255));

while (!key[KEY_ESC]) {
rest(1);
clear(buffer);

draw_sprite(buffer, fundo[f], x, y);

if (mouse_b & 1)
{
b = 1;
if (mm == 0)
{
mx = mouse_x;
my = mouse_y;
cr = 50 + rand() % 255;
cg = 50 + rand() % 255;
cb = 50 + rand() % 255;
mm = 1;
}
}
else
{
b = 0;
mm = 0;
}
draw_sprite(buffer, obj, ox, oy);
if (key[KEY_F10])
{
if (is_windowed_mode())
{
set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0);
}
else
{
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
}
}

if (b == 1 && key[KEY_LSHIFT])
{
rectfill(buffer, mx, my, mouse_x, mouse_y, makecol(cr, cg, cb));
}else if (b == 1)
{
rect(buffer, mx, my, mouse_x, mouse_y, makecol(cr, cg, cb));
}

if (mouse_b & 2 || mouse_b & 4)
{
if(mouse_x > ox && mouse_x < ox+50 && mouse_y > oy && mouse_y < oy+50) { ox = mouse_x - 25; oy = mouse_y - 25; } } if (ca == 0) { if (++cc == 254) { ca = 1; } } else { if (--cc == 0) { ca = 0; } } if (key[KEY_UP] || key[KEY_W]) { py--; } if (key[KEY_DOWN] || key[KEY_S]) { py++; } if (key[KEY_LEFT] || key[KEY_A]) { px--; } if (key[KEY_RIGHT] || key[KEY_D]) { px++; } if(key[KEY_F]) { if (ff++ == 15) { if (f == 1) f = 0; else f = 1; ff = 0; } } draw_sprite(buffer, player, px, py); draw_sprite(buffer, cursor, mouse_x, mouse_y); textprintf_ex(buffer, font, 10, 10, makecol(255, 255, 255), -1, "Um exemplo de boas implementacoes com as primitivas!"); textprintf_ex(buffer, font, 549, 467, makecol(cc, cc, cc), -1, "by CrociDB"); blit(buffer, screen, 0, 0, 0, 0, 640, 480); } deinit(); return 0; } END_OF_MAIN() /* DEsenha a bolinha... */ BITMAP *makePlayer() { BITMAP *ret = create_bitmap(30, 30); clear_to_color(ret, makecol(255, 0, 255)); circlefill(ret, 15, 15, 13, makecol(250, 140, 90)); circlefill(ret, 15, 15, 11, makecol(250, 160, 105)); circlefill(ret, 15, 15, 8, makecol(250, 170, 120)); circlefill(ret, 15, 15, 6, makecol(250, 180, 130)); return ret; } /* Desenha o cursor do mouse */ BITMAP *makeCursor() { BITMAP *ret = create_bitmap(20, 20); clear_to_color(ret, makecol(255,0,255)); line(ret, 0, 0, 5, 20, makecol(255, 150, 150)); line(ret, 0, 0, 20, 5, makecol(255, 150, 150)); line(ret, 5, 20, 20, 5, makecol(255, 150, 150)); return ret; } /* Faz o fundo de Linhas */ BITMAP *makeFundoLine() { int i; int x1, y1, x2, y2; BITMAP *ret = create_bitmap(640, 480); for (i=0;i<600;i++) { x1 = rand() % 640; y1 = rand() % 480; x2 = rand() % 640; y2 = rand() % 480; line(ret, x1, y1, x2, y1, makecol(60, 60, 50)); } for (i=0;i<500;i++) { x1 = rand() % 640; y1 = rand() % 480; x2 = rand() % 640; y2 = rand() % 480; line(ret, x1, y1, x1, y2, makecol(70, 50, 70)); } rect(ret, 0, 0, 639, 479, makecol(190, 190, 190)); rect(ret, 1, 1, 638, 478, makecol(130, 130, 130)); rect(ret, 2, 2, 637, 477, makecol(50, 50, 50)); return ret; } /* Cria o fundo de Círculos */ BITMAP *makeFundoCircle() { int i; int x, y, r; BITMAP *ret = create_bitmap(640, 480); for (i=0;i<10;i++) { x = rand() % 640; y = rand() % 480; r = 40 + rand() % 15; circlefill(ret, x, y, r, makecol(50, 50, 50)); } for (i=0;i<30;i++) { x = rand() % 640; y = rand() % 480; r = 30 + rand() % 15; circle(ret, x, y, r, makecol(50, 50, 50)); } for (i=0;i<50;i++) { x = rand() % 640; y = rand() % 480; r = 20 + rand() % 10; circle(ret, x, y, r, makecol(100, 100, 100)); } for (i=0;i<70;i++) { x = rand() % 640; y = rand() % 480; r = 10 + rand() % 5; circle(ret, x, y, r, makecol(150, 150, 150)); } for (i=0;i<100;i++) { x = rand() % 640; y = rand() % 480; r = 5 + rand() % 4; circle(ret, x, y, r, makecol(200, 200, 200)); } for (i=0;i<80;i++) { x = rand() % 640; y = rand() % 480; r = 3 + rand() % 3; circle(ret, x, y, r, makecol(250, 250, 250)); } rect(ret, 0, 0, 639, 479, makecol(190, 190, 190)); rect(ret, 1, 1, 638, 478, makecol(130, 130, 130)); rect(ret, 2, 2, 637, 477, makecol(50, 50, 50)); return ret; } /* Função de Inicialização do Allegro */ void init() { int depth, res; allegro_init(); depth = desktop_color_depth(); if (depth == 0) depth = 32; set_color_depth(depth); res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); if (res != 0) { allegro_message(allegro_error); exit(-1); } install_timer(); install_keyboard(); install_mouse(); /* add other initializations here */ srand(time(NULL)); } /* Função para Finalizar o Allegro */ void deinit() { clear_keybuf(); allegro_exit(); }[/sourcecode] Antes de Verem o código, executem... O botão direito do mouse, cria um retângulo (que nem quando você seleciona um arquivo no windows explorer O.o), se você apertar Shift Esquerdo, ele deixa o retângulo preenchido... O quadrado que está no canto superior esquerdo, pode ser movido, clicando com o botão direito e movendo-o. A bolinha pode mexer com A,S,D,W... A Tecla "F", muda o fundo, a F10, muda entre fullscreen e janela... Como eu já disse, é um programa inútil, só é interessante, para quem quer

Uma resposta

  1. crocidb
    Oo show!!

    Parabens!!
    XD…….entra mais msn naum?? tenhooo umas duvidas com structs para um joguinho q estou fazendo….

    Flws
    abraco ae o/

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: