#include <allegro.h>
#include <iostream>
#include <conio.h>
#include <ctime>
int tablica[ 2 ][ 2 ];
void kod()
{
for( int i = 0; i < 3; ++i )
for( int j = 0; j < 3; ++j )
tablica[ i ][ j ] = 0;
}
int main()
{
allegro_init();
install_keyboard();
install_mouse();
set_color_depth( 16 );
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 232, 232, 0, 0 );
show_mouse( screen );
unscare_mouse();
clear_to_color( screen, makecol( 128, 128, 128 ) );
BITMAP * bufor = NULL;
bufor = create_bitmap( 232, 232 );
if( !bufor )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "Nie mogę utworzyć bufora !" );
allegro_exit();
return 0;
}
BITMAP * paleta = NULL;
paleta = load_bmp( "paleta.bmp", default_palette );
if( !paleta )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie mogę załadować obrazka paleta !" );
allegro_exit();
return 0;
}
BITMAP * kolko = NULL;
kolko = load_bmp( "kolko.bmp", default_palette );
if( !kolko )
{
set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
allegro_message( "nie mogę załadować obrazka kolko !" );
allegro_exit();
return 0;
}
kod();
while( !key[ KEY_ESC ] )
{
int mx = 0, my = 0, mb = 0;
masked_blit( paleta, bufor, 0, 0, 0, 0, paleta->w, paleta->h );
if( mx != mouse_x || my != mouse_y || mb != mouse_b )
{
mx = mouse_x;
my = mouse_y;
mb = mouse_b;
}
int pmx = 0, pmy = 0;
if( mx >= 0 && mx <= 64 && my <= 64 && my >= 0 ) pmx = 0, pmy = 0;
if( mx >= 64 + 20 && mx <= 64 + 64 + 20 && my <= 64 && my >= 0 ) pmx = 1, pmy = 0;
if( mx >= 64 + 40 + 64 && mx <= 64 + 64 + 40 + 64 && my <= 64 && my >= 0 ) pmx = 2, pmy = 0;
if( mx >= 0 && mx <= 64 && my <= 148 && my >= 84 ) pmx = 0, pmy = 1;
if( mx >= 64 + 20 && mx <= 64 + 64 + 20 && my <= 148 && my >= 84 ) pmx = 1, pmy = 1;
if( mx >= 64 + 40 + 64 && mx <= 64 + 64 + 40 + 64 && my <= 148 && my >= 84 ) pmx = 2, pmy = 1;
if( mx >= 0 && mx <= 64 && my <= 148 + 20 + 64 && my >= 84 + 20 + 64 ) pmx = 0, pmy = 2;
if( mx >= 64 + 20 && mx <= 64 + 64 + 20 && my <= 148 + 20 + 64 && my >= 84 + 20 + 64 ) pmx = 1, pmy = 2;
if( mx >= 64 + 40 + 64 && mx <= 64 + 64 + 40 + 64 && my <= 148 + 20 + 64 && my >= 84 + 20 + 64 ) pmx = 2, pmy = 2;
if( mx > 64 && mx < 84 || mx > 84 + 64 && mx < 84 + 84 ) pmx = 5, pmy = 5;
if( my > 64 && my < 84 || my > 84 + 64 && my < 84 + 84 ) pmx = 5, pmy = 5;
if( mb == 1 )
{
tablica[ pmx ][ pmy ] = 1;
}
system( "cls" );
std::cout << pmx << std::endl;
std::cout << pmy << std::endl;
std::cout << tablica[ 0 ][ 0 ] << std::endl;
std::cout << tablica[ 1 ][ 0 ] << std::endl;
std::cout << tablica[ 2 ][ 0 ] << std::endl;
std::cout << tablica[ 0 ][ 1 ] << std::endl;
std::cout << tablica[ 1 ][ 1 ] << std::endl;
std::cout << tablica[ 2 ][ 1 ] << std::endl;
std::cout << tablica[ 0 ][ 2 ] << std::endl;
std::cout << tablica[ 1 ][ 2 ] << std::endl;
std::cout << tablica[ 2 ][ 2 ] << std::endl;
if( tablica[ 0 ][ 0 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 0, 0, kolko->w, kolko->h );
if( tablica[ 1 ][ 0 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 84, 0, kolko->w, kolko->h );
if( tablica[ 2 ][ 0 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 168, 0, kolko->w, kolko->h );
if( tablica[ 0 ][ 1 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 0, 84, kolko->w, kolko->h );
if( tablica[ 1 ][ 1 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 84, 84, kolko->w, kolko->h );
if( tablica[ 2 ][ 1 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 168, 84, kolko->w, kolko->h );
if( tablica[ 0 ][ 2 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 0, 168, kolko->w, kolko->h );
if( tablica[ 1 ][ 2 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 84, 168, kolko->w, kolko->h );
if( tablica[ 2 ][ 2 ] == 1 ) masked_blit( kolko, bufor, 0, 0, 168, 168, kolko->w, kolko->h );
blit( bufor, screen, 0, 0, 0, 0, 232, 232 );
clear_to_color( bufor, makecol( 150, 150, 150 ) );
clear_keybuf();
}
readkey();
destroy_bitmap( paleta );
destroy_bitmap( bufor );
destroy_bitmap( kolko );
allegro_exit();
return 0;
}
END_OF_MAIN();
wszystko działa tylko jeśli mam paletę w kształcie jak do kółko i krzyżyk każdy powinien się połapać.
i jeśli kliknę w lewy górny róg to działa ale jeśli kliknę w środek u góry to mi się pojawi kółko w polu klikniętym oraz w lewym dolnym rogu.
tak samo jest z prawym górnym rogiem jeśli na niego kliknę to pojawi się kółko na tym polu oraz na dolnym środku. nie wiem co morze być przyczyną jeśli będzie potrzeba to zapodam wszystkie pliki.