算法竞赛第三章 习题3-5 谜题

本文介绍了一个简单的滑块拼图游戏程序实现方法,使用 C++ 编程语言完成。程序首先通过 cin 输入构建一个 5x5 的字符型二维数组作为游戏盘面,并记录空白位置坐标。然后依据用户输入的指令移动空白方块,支持上(A)、下(B)、左(L)、右(R)四个方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;
//建立5*5表格
char biao[5][5];
int main()
{
 //填充表格  初始位置 x行 y列 cin不读空格 原来傻冒用cin
 int x , y ;
 char p; int t=0;
 while (cin.get(p))
 {
  if (t < 25)
  {
   biao[t / 5][t % 5] = p;
   if (biao[t / 5][t % 5] == ' ')
   {
    x = t / 5; y = t % 5;
   }
  }
  else break;
  t++;
 }
 cout << x <<" "<< y;
 //输入指令,以0结束
 char c;
 while (cin >> c)
 {
  //如果为0,结束并输出,其他位置交换值并改变末位置
  if (c == '0')
  {
   for (int i = 0; i <5 ; i++)
   {
    for (int k = 0; k < 5; k++)
    {
     cout << biao[i][k]<<" ";
    }
    cout << endl;
   }

  }
  //如果不为零
  else
  {
   //往上
   if (c == 'A')
   {
    if (x - 1 < 0) cout << "This puzzle has no final configuration";
    else
    {
     biao[x][y] = biao[x - 1][y];
     biao[x - 1][y] = ' ';
     x--;
    }
   }
   //往下
   if (c == 'B')
   {
    if (x + 1 >4) cout << "This puzzle has no final configuration";
    else
    {
     biao[x][y] = biao[x + 1][y];
     biao[x + 1][y] = ' ';
     x++;
    }
   }
   //往左
   if (c == 'L')
   {
    if (y-1<0) cout << "This puzzle has no final configuration";
    else
    {
     biao[x][y] = biao[x][y-1];
     biao[x][y-1] = ' ';
     y--;
    }
   }
   //往右
   if (c == 'R')
   {
    if (y +1>4) cout << "This puzzle has no final configuration";
    else
    {
     biao[x][y] = biao[x][y + 1];
     biao[x][y + 1] = ' ';
     y++;
    }
   }
  }
 
 }
 system("pause");
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值