拼图游戏

/*软件名称:  拼图游戏
/*开发平台:  microsoft Visual 6.0
/*测试环境:  microsoft Visual 6.0
/*开 发 者:  lin_miao
/*开发时间:  2008年10月23日 23:19——2008年10月24日 0:42
/*联系方式:  lin_miao0818@126.com
*/

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>

const int max=5;
const char UP='w';
const char DOWN='s';
const char LEFT='a';
const char RIGHT='d';
const char EXIT='E';

char Level;
int Column,Row;
int flag_Column,flag_Row;
int Screen[max][max];

void UpdataScreen()
{
 int i,j;
 system("cls");
 for(i=0;i<Row;i++)
 {
  printf("/n/n/t");
  for(j=0;j<Column;j++)
   Screen[i][j]==0?printf("/t"):printf("%d/t",Screen[i][j]);
 }
 printf("/n/n/n%c--UP  %c--DOWN  %c--LEFT  %c--RIGHT  %c--EXIT",UP,DOWN,LEFT,RIGHT,EXIT);
}

char ScanKey()
{
 char ch;
 do
 {
  ch=getch();
 }while(ch!=UP&&ch!=DOWN&&ch!=LEFT&&ch!=RIGHT&&ch!=EXIT);
 return ch;
}

bool play(char c)
{
 switch(c)
 {
 case UP:
  if(flag_Row!=Row-1)
  {
   Screen[flag_Row][flag_Column]=Screen[flag_Row+1][flag_Column];
   flag_Row=flag_Row+1;
   Screen[flag_Row][flag_Column]=0;
   return true;
  }break;
 case DOWN:
  if(flag_Row!=0)
  {
   Screen[flag_Row][flag_Column]=Screen[flag_Row-1][flag_Column];
   flag_Row=flag_Row-1;
   Screen[flag_Row][flag_Column]=0;
   return true;
  }break;
 case LEFT:
  if(flag_Column!=Column-1)
  {
   Screen[flag_Row][flag_Column]=Screen[flag_Row][flag_Column+1];
   Screen[flag_Row][flag_Column+1]=0;
   flag_Column=flag_Column+1;
   return true;
  }break;
 case RIGHT:
  if(flag_Column!=0)
  {
   Screen[flag_Row][flag_Column]=Screen[flag_Row][flag_Column-1];
   Screen[flag_Row][flag_Column-1]=0;
   flag_Column=flag_Column-1;
   return true;
  }break;
 case EXIT:
  exit(0);
 }
 return false;
}

void init()
{
 int i,j,k=1;
 printf("请输入级别:1--低级  2--中级  3--高级/n");

 while((Level=getch()),(Level<'1'||Level>'3'))
 {
  printf("选择错误! 请再次选择!/a/n");
 }

 switch(Level)
 {
 case '1':Row=3;Column=3;break;
 case '2':Row=4;Column=4;break;
 case '3':Row=5;Column=5;break;
 }

 for(i=0;i<Row;i++)
  for(j=0;j<Column;j++)
   Screen[i][j]=k++;
 Screen[Row-1][Column-1]=0;
 flag_Row=Row-1;
 flag_Column=Column-1;

 srand((unsigned)time(NULL));

 for(i=0;i<Row*Column*10;i++)
 {
  switch(rand()%4)
  {
  case 0:play(UP);break;
  case 1:play(DOWN);break;
  case 2:play(LEFT);break;
  case 3:play(RIGHT);break;
  }
 }
}

bool iswin()
{
 int i,j,k=0;
 for(i=0;i<Row;i++)
  for(j=0;j<Column;j++)
   if(++k!=Screen[i][j]&&k<Row*Column)
    return false;
 return true;
}

void main()
{
 init();
 UpdataScreen();
 while(true)
 {
  if(play(ScanKey()))
  {
   UpdataScreen();
   if(iswin())
    break;
  }
 }
 printf("/n/n/n/t你赢了!/n请按任意键结束!/a");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值