#include <windows.h>
#include <stdio.h>
HINSTANCE hInst;
int a[4][4];
int b[4][4]=
{
{5,7,10,4},
{11,12,8,1},
{13,3,2,14},
{6,15,9,0 }
};
HDC hdc;
……..
switch (message)
{
case WM_PAINT:
{
hdc=BeginPaint(hwnd,&ps);
Rectangle(hdc,100,100,500,500) // игровое поле;
int i,j,s;
char str[2];
for (i=0;i<4;i++)
for (j=0;j<4;j++)
{
Rectangle(hdc,100*(i+1),100*(j+1),100*(i+2),100*(j+2)) // рисуем ячейки
sprintf(str,"%d",b[i][j]);
a[i][j]=s+1; // запоминаем номер ячейки
TextOut(hdc,100*(i+1)+40,100*(j+1)+40,str,2);
s=a[i][j];
}
EndPaint(hwnd,&ps);
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_MOUSEMOVE:
?????
case WM_LBUTTONDOWN:
??????
default:
return (DefWindowProc(hwnd, message, wParam, lParam));
}
return (0);
}
Помогите, пожалуйста, с прогой, срочно нужно сделать(( При запуске выдается какое-то дебаговское предупреждение…из-за него не могу ничего сделать дальше. В чем может быть проблема? И главный вопрос…как можно менять местами ячейки, двигая мышь??? Если кто-то делал что-то подобное, объясните, плиз, может я че-то вообще не так понимаю(
10 июля 2009 в 12:04
//Заполнение массива цифр
for(int i=1;i<16;i++) digits[i-1]=i;
digits[15]=0;
//Разделение
srand(time(NULL));
for(int i=0;i<2;i++)
{
x=rand()%16;
y=rand()%16;
temp=digits[x];
digits[x]=digits[y];
digits[y]=temp;
}
//Отображение
for(int i=0;i<16;i++)
if(digits[i]!=0)
{
wsprintf(buff,"%d",digits[i]);
SetWindowText(buttons[i],buff);
}
/-> описываем все возможные ходы.
return 0 ;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 1:
index1=0;
if(digits[1]==0) index=1;
else if(digits[4]==0) index=4;
else return 0;
break;
case 2:
index1=1;
if(digits[0]==0) index=0;
else if(digits[5]==0) index=5;
else if(digits[2]==0) index=2;
else return 0;
break;
case 3:
index1=2;
if(digits[1]==0) index=1;
else if(digits[6]==0) index=6;
else if(digits[3]==0) index=3;
else return 0;
break;
case 4:
index1=3;
if(digits[2]==0) index=2;
else if(digits[7]==0) index=7;
else return 0;
break;
case 5:
index1=4;
if(digits[0]==0) index=0;
else if(digits[5]==0) index=5;
else if(digits[8]==0) index=8;
else return 0;
break;
case 6:
index1=5;
if(digits[4]==0) index=4;
else if(digits[1]==0) index=1;
else if(digits[6]==0) index=6;
else if(digits[9]==0) index=9;
else return 0;
break;
…
так далее…
}
temp=digits[index1];
digits[index1]=digits[index];
digits[index]=temp;
wsprintf(buff,"%d",digits[index]);
SetWindowText(buttons[index],buff);
SetWindowText(buttons[index1],"");
counter++;
wsprintf(buff,"15 – %d ходов",counter);
SetWindowText(hwnd,buff);
check();
return 0;