singlepost

Пятнашки VC++ << На главную или назад  

#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);
}

Помогите, пожалуйста, с прогой, срочно нужно сделать(( При запуске выдается какое-то дебаговское предупреждение…из-за него не могу ничего сделать дальше. В чем может быть проблема? И главный вопрос…как можно менять местами ячейки, двигая мышь??? Если кто-то делал что-то подобное, объясните, плиз, может я че-то вообще не так понимаю(

Один ответ в теме “Пятнашки VC++”

  1. 1
    Денис Дружинин ответил:

    //Заполнение массива цифр
    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;

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.