15数码问题,急求!!!!!
要一个4*4的方框,随机1----15的顺序加一个空格,按键盘的上下左右移动,最后成为
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15
的顺序,不需要电脑自动求解,只要能用上下左右达到就行,类似于拼图游戏,明天老师就要,帮帮忙!!!谢谢了!!!
[解决办法]
作业啊,自己做吧!
有问题就问!
[解决办法]
拼图游戏
发表日期:2004年9月6日 出处:原创 作者:沧海一粟 已经有1877位读者读过此文
运行程序后,会产生9个数字,当人把数字拼成
1 2 3
4 5 6
7 8 9
你就过关了,很简单的。
#include <math.h>
#include <graphics.h>
#include <stdio.h>
#include <dos.h>
#define left 0x4b
#define right 0x4d
#define down 0x50
#define esc 0x01
#define up 0x48
#define col 4
#define row 3
int a[9]={1,2,3,4,5,6,7,8,9};
int board[3][3];//面板
int k,m;//9的坐标
int get_key(void);
void Draw9(int x,int y,char s[]);
void Draw(int x,int y,char s[]);
main()
{
int gdriver=VGA,gmode=VGAHI,errorcode;
int i,j,key,dec=9,temp,temp1;
char *s[]={ "0 ", "1 ", "2 ", "3 ", "4 ", "5 ", "6 ", "7 ", "8 ", "9 "};
initgraph(&gdriver,&gmode, "d:\\tc ");
errorcode=graphresult();
if(errorcode!=0)
{printf( "the graph error:%s ",grapherrormsg(errorcode));
getch();
printf( "press any key to halt: ");
exit(1);
}
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{temp=rand()%dec;dec--;
board[i][j]=a[temp];
for(temp1=temp;temp1 <dec;temp1++)
a[temp1]=a[temp1+1];
}
setcolor(15);
rectangle(198,148,351,301);
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{if(board[i][j]!=9)
Draw((col+j)*50,(row+i)*50,s[board[i][j> );
else
{k=i;m=j;
Draw9((col+j)*50,(row+i)*50,s[board[i][j> );
}
}
while(1)
{while(bioskey(1)==0);
key=get_key();
switch(key)
{case up:if(k> 0)
{board[k][m]=board[k-1][m];
board[k-1][m]=9;
k--;
Draw9((col+m)*50,(row+k)*50,s[board[k][m> );
Draw((col+m)*50,(row+k+1)*50,s[board[k+1][m> );
if(judge()){printf( "you win!!!,press any key to exit ");getch();exit(0); } }
break;
case down:if(k <2)
{
board[k][m]=board[k+1][m];
board[k+1][m]=9;
k++;
Draw9((col+m)*50,(row+k)*50,s[board[k][m> );
Draw((col+m)*50,(row+k-1)*50,s[board[k-1][m> );
if(judge()){printf( "you win!!!,press any key to exit ");getch();exit(0);}
}
break;
case left:if(m> 0)
{
board[k][m]=board[k][m-1];
board[k][m-1]=9;
m--;
Draw9((col+m)*50,(row+k)*50,s[board[k][m> );
Draw((col+m+1)*50,(row+k)*50,s[board[k][m+1> );
if(judge()){printf( "you win!!!,press any key to exit ");getch();exit(0);}
}
break;
case right:if(m <2)
{board[k][m]=board[k][m+1];
board[k][m+1]=9;
m++;
Draw9((col+m)*50,(row+k)*50,s[board[k][m> );
Draw((col+m-1)*50,(row+k)*50,s[board[k][m-1> );
if(judge()){printf( "you win!!!,press any key to exit ");getch();exit(0);}
}
break;
case esc:exit(0);
}
}
}
int get_key(void)
{union REGS reg;
reg.h.ah=0;
int86(0x16,®,®);
return(reg.h.ah);
}
void Draw9(int x,int y,char s[])/* x, y为左上角坐标sizex,sizey为长和宽*/
{int sizx=50-1;
int sizy=50-1;
setcolor(0);/*这里最好用灰色*/
line(x,y,x+sizx-1,y);
line(x,y+1,x+sizx-2,y+1);
line(x,y,x,y+sizy-1);
line(x+1,y,x+1,y+sizy-2);
setcolor(8);/*这里最好用深灰色*/
line(x+1,y+sizy,x+sizx,y+sizy);
line(x+2,y+sizy-1,x+sizx,y+sizy-1);
line(x+sizx-1,y+1,x+sizx-1,y+sizy);
line(x+sizx,y+2,x+sizx,y+sizy);
setcolor(15);/*这里最好用白色*/
putpixel(x,y+sizy,3);
putpixel(x+1,y+sizy-1,3);
putpixel(x+sizx,y,3);
putpixel(x+sizx-1,y+1,3);
setfillstyle(1, 7);/*这里最好用灰色,设置填充模式*/
bar(x+2,y+2,x+sizx-2,y+sizy-2);setcolor(0);
setcolor(0);
settextboardify(CENTER_TEXT,CENTER_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,3);
outtextxy(x+25,y+25,s);
}
void Draw(int x,int y,char s[])/* x, y为左上角坐标sizex,sizey为长和宽*/
{int sizx=50-1;
int sizy=50-1;
setcolor(15);/*这里最好用白色*/
line(x,y,x+sizx-1,y);
line(x,y+1,x+sizx-2,y+1);
line(x,y,x,y+sizy-1);
line(x+1,y,x+1,y+sizy-2);
setcolor(8);/*这里最好用深灰色*/
line(x+1,y+sizy,x+sizx,y+sizy);
line(x+2,y+sizy-1,x+sizx,y+sizy-1);
line(x+sizx-1,y+1,x+sizx-1,y+sizy);
line(x+sizx,y+2,x+sizx,y+sizy);
setcolor(7);/*这里最好用灰色*/
putpixel(x,y+sizy,3);
putpixel(x+1,y+sizy-1,3);
putpixel(x+sizx,y,3);
putpixel(x+sizx-1,y+1,3);
setfillstyle(1, 7);/*这里最好用灰色,设置填充模式*/
bar(x+2,y+2,x+sizx-2,y+sizy-2);setcolor(0);
setcolor(0);
settextboardify(CENTER_TEXT,CENTER_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,3);
outtextxy(x+25,y+25,s);
}
int judge()
{if((board[0][0]==1)&&(board[0][1]==2)&&(board[0][2]==3)&&(board[1][0]==4)&&(board[1][1]==5)&&(board[1][2]==6)&&(board[2][0]==7)&&(board[2][1]==8)&&(board[2][2]==9))
return 1;
esle return 0;
}
[解决办法]
#include <graphics.h> 加载不了啊vc6.0