C语言实现简易连连看游戏

本文为大家分享了C语言实现连连看游戏位的具体代码,供大家参考,具体内容如下

题目

给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(x​1,y1​​ )、(x​2,y​2),判断这两个位置上的符号是否匹配。如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。

输入格式及样例

格式

输入在一行中给一个正整数N(<5)。随后2N行,每行2N个大写英文字母(其间以1个空格分隔),表示游戏盘面。盘面之后给出一个正整数K,随后K行,每行按照格式“x1y1x​2y2”给出一个玩家的输入。注意格子的行、列编号是从1到2N。

样例

2
I T I T
A B A B
A A A A
C D C D
9
1 1 1 3
1 2 1 4
2 1 2 3
2 2 2 4
3 1 3 2
3 3 3 4
4 1 4 3
4 2 4 3
4 2 4 4

输出格式及样例

格式

根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以1个空格分隔,行末不得有多余空格。

样例

参考代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Print(int n,char**arr);
int main() {
 int n,i,j;
 int fail = 0,secc=0;
 scanf("%d", &n);
 char** arr = (char**)malloc(sizeof(char*) * 2 * n);
 for (i = 1; i <= 2 * n; i++)
  arr[i] = (char*)malloc(sizeof(char) * 2 * n);
 for (i = 1; i <= 2 * n; i++)
  for (j = 1; j <= 2 * n; j++) {
   scanf("%c", &arr[i][j]);
   if (arr[i][j] == ' ' || arr[i][j] == '\n')
    j--;
  }

 int k;
 scanf("%d", &k);
 int** brr = (int**)malloc(sizeof(int*) * k);
 for (i = 1; i <= k; i++)
  brr[i] = (int*)malloc(sizeof(int) * 4);
 for (i = 1; i <= k; i++)
  for (j = 1; j <= 4; j++)
   scanf("%d", &brr[i][j]);
 for (i = 1; i <= k; i++) {
  char x, y;
  int x1, y1, x2, y2;
  x1 = brr[i][1];
  y1 = brr[i][2];
  x2 = brr[i][3];
  y2 = brr[i][4];
  x = arr[x1][y1];
  y = arr[x2][y2];
  //printf("%c %c\n",x ,y);
  if (x == y) {
   arr[x1][y1] = '*';
   arr[x2][y2] = '*';
   secc++;
   int m = (2*n * 2*n) / 2;
   if (secc == m&& n * n % 2 == 0) {
    printf("Congratulation!\n");
    exit(0);
   }
   Print(n,arr);
   //printf("\n");

  }
  else {
   printf("Uh-oh\n");
   fail++;
   if (fail == 3) {
    printf("Game Over\n");
    exit(0);
   }
  }
  //printf("%c %c\n", x, y);
  /*if (arr[(brr[i][1])][(brr[i][2])] == arr[(brr[i][3])][(brr[i][4])]) {
   arr[(brr[i][1])][(brr[i][2])] = '*';
   arr[(brr[i][3])][(brr[i][4])] = '*';

   }*/

 }

 return 0;
}

//-----------function
void Print(int n,char**arr) {
 /*char** arr = (char**)malloc(sizeof(char*) * 2 * n);
 for (int i = 1; i < 2 * n; i++)
  arr[i] = (char*)malloc(sizeof(char) * 2 * n);*/
 for (int i = 1; i <= 2 * n; i++) {
  printf("%c", arr[i][1]);
  for (int j = 2; j <= 2 * n; j++) {
   printf(" %c", arr[i][j]);
  }
  printf("\n");
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++连连看判定图形消除算法

    我们玩过的连连看游戏,通过选定两个图形相同的元素,判定其是否可在三次转弯内连接起来,若能,则消去,若不能,则不可消去,直至最后全部消除. 本算法中不包括关于死锁状态判定. // 连连看.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream.h> #include <vector> #include <queue

  • C++实现连连看消除算法

    C++连连看消除代码的实现,过程比较复杂. #include<iostream> #include<vector> using namespace std; bool CheckRemove(int x1,int y1,int x2,int y2,int rows,int cols,int ***pArray); void Swap(int &a,int &b); typedef struct { int x; int y; }point; int main() {

  • C++实现连连看游戏核心代码

    这两天研究了一下连连看游戏的源代码,感觉它挺简单的,主要就是判断选中的两张图片能否消去.我参考了网上的源代码(抱歉的是,不记得当时下载的网址了,在此对原作者表示深深的歉意!),然后自己把核心代码整理如下,与大家共享.需要说明的是,这只是核心算法的代码,界面设计和操作的代码均已略去. #include <stdlib.h> #include <time.h> //图片类 class picture { public: int type;//图片的编号,共有n种,从0到n-1 bool

  • C语言实现简易连连看游戏

    本文为大家分享了C语言实现连连看游戏位的具体代码,供大家参考,具体内容如下 题目 给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号.这些符号一定是成对出现的,同一个符号可能不止一对.程序读入玩家给出的一对位置(x​1,y1​​ ).(x​2,y​2),判断这两个位置上的符号是否匹配.如果匹配成功,则将两个符号消为"*"并输出消去后的盘面:否则输出"Uh-oh".若匹配错误达到3次,则输出"Game Over"并结束游戏.或者当全部符号

  • C语言实现简易扫雷游戏

    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 扫雷 楔子: 扫雷游戏是我们小时候无聊时消磨时间的小玩意,虽然更新到Win10系统后经典的扫雷游戏不再了,不过它现在仍以一种抓虫子的游戏形式存在于Windows这个系统平台,不禁感慨游戏还是那个游戏,不过人已经不是那些人了啊. 其实扫雷游戏的实现也主要运用了数组和函数封装与调用的知识,具体请看程序. 以下为程序主体: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>

  • C语言实现简易扫雷游戏详解

    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 一.想要达到的游戏功能: 大家如果想编写一个游戏,应具备以下的步骤: 1:了解游戏的规则 2:   知道游戏应该实现哪些功能 3:根据这些功能构建出游戏的基本框架 4:如何将整个游戏拆分成一个个模块,进行模块化编程 我们拿到一个任务,尤其是编写像扫雷这对于初学者有难度的问题时,应该做到先理清思路,再进行代码编写,现在我们来讲一下扫雷游戏预期实现的功能. 1:要有一个游戏菜单能让玩家选择进入游戏还是退出游戏. 2:程序

  • 基于C语言实现简易扫雷游戏

    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 1.头文件 #define _CRT_SECURE_NO_WARNINGS //包含头文件 #include <stdio.h> #include <stdlib.h> //定义数值 #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS COL+2 //定义雷的数量 #define mine_num 10 //函数定义 //初始化 voi

  • C语言实现简易扑克牌游戏

    将一副扑克牌平均分成两份,每人拿一份.a先拿出手中的第一张扑克牌放在桌上,然后b也拿出手中的第一张扑克牌,并放在a刚打出的扑克牌的上面,就像这样两人交替出牌.出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾.当任意一人手中的牌全部出完时,游戏结束,对手获胜. 以下是代码的实现: #define _crt_secure_no_deprecate #include<stdio.h> #include<stdlib.h>

  • C语言实现简易版扫雷小游戏

    本文实例为大家分享了C语言实现简易版扫雷的具体代码,供大家参考,具体内容如下 声明 本次扫雷小游戏用多文件来编写.首先,要自定义的一个头文件 mine.h,里面有扫雷程序里面所需要的头文件.常量和所有函数的声明.其次,创建主函数 test.c,用自己喜欢的方式构建一个游戏的框架,最后,创建自定义函数 mine.c,编写各项功能. 设计思路 1.先写主函数,理清整个游戏流程. int main() { int quit = 0; do{ int select = 0; Menu(); scanf(

  • C语言构建连连看游戏(矩阵方式)

    C语言构建连连看游戏的具体代码,供大家参考,具体内容如下 设计要求 用数字+英文字母,采用文本输出的方式.每次输出一个8*10的矩形,然后等待玩家输入两个数字或字母的坐标,如果满足消除规则就输出新的矩形. 注意:考虑类似迷宫的处理方式,在8 * 10矩形之外加一层空心围墙,可以用来连接.大家体验一下连连看游戏就可以发现这个规则.判断是否能连,用的是10 *12的数组,最外层添加的是空格,可用来辅助连接. 分析 大纲(简化): /**********************************

  • C语言实现简易的扫雷游戏

    本文实例为大家分享了C语言实现简易的扫雷游戏的具体代码,供大家参考,具体内容如下 在正式讲内容之前先说一说扫雷游戏的规则 游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地雷游戏胜利 .刚开始需要碰运气,只要点开一个区域,就可以正式开始了. 3.根据现有情况,判断出一定有雷的位置. 4.进一步计算,因为"2"右边的"1"已经有从属的雷了,所以右边的"2"的正下方没有雷,因此可以判断出左边有两颗雷,满足两个"2". 5.

  • C语言构建连连看游戏(矩阵方式)

    C语言构建连连看游戏的具体代码,供大家参考,具体内容如下 设计要求 用数字+英文字母,采用文本输出的方式.每次输出一个8*10的矩形,然后等待玩家输入两个数字或字母的坐标,如果满足消除规则就输出新的矩形. 注意:考虑类似迷宫的处理方式,在8 * 10矩形之外加一层空心围墙,可以用来连接.大家体验一下连连看游戏就可以发现这个规则.判断是否能连,用的是10 *12的数组,最外层添加的是空格,可用来辅助连接. 分析 大纲(简化): /**********************************

  • java实现简易连连看小游戏

    本文实例为大家分享了java实现简易连连看小游戏的具体代码,供大家参考,具体内容如下 新手上路,分享一下 直接上代码 package linkgame; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.

随机推荐