C语言实现拼图游戏

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

一、完成拼图所要实现的功能

1.实现图形界面

一维数组,二维数组,图形库里面的贴图

2.绘制一个开始界面的菜单

图形库(画矩形,填充颜色),文字输出,鼠标操作

3.加载资源

切割技术,用到随机函数,随机产生一维数组下标,然后赋值给二维数组进行初始化。

4.贴图

我这里3行3列的。遍历二维数组进行 贴图。

5.游戏过程

主要是鼠标操作,遇到空白的一块,左右上下都可以交换。

二、效果展示

三、代码实现

/************************************************************************
*  项目名称:拼图游戏
*  项目描述:图片切割,随机函数,一维二维间的赋值,树边操作
*  项目环境:VS2013
*  生成日期:2019-3-13
*  作者所属:追梦
*************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<easyx.h>
#include<time.h>
#include<conio.h>
int array2D[3][3] = { 0 };
int array1D[9] = { 0 };
IMAGE img, block;
struct blankPos
{
 int i, j;
}myPos{ 0, 0 };
struct blankPos searchPos(int array2D[][3], int l, int h)
{
 for (int i = 0; i < l;i++)
 {
 for (int j = 0; j < h;j++)
 {
 if (array2D[i][j] == 8)
 {
 myPos.j = j;
 myPos.i = i;
 return myPos;
 }
 }
 }
 return myPos;
}
void drawMenu()//菜单
{
 initgraph(300, 300);
 setbkcolor(WHITE);
 cleardevice();
 setfillcolor(BLUE);
 settextstyle(10, 0, L"宋体");
 setbkmode(TRANSPARENT);
 fillrectangle(120, 60, 180, 80);
 fillrectangle(120, 85, 180, 105);
 outtextxy(130, 65, L"开始游戏");
 outtextxy(130, 90, L"退出游戏");
 settextcolor(RED);
 outtextxy(95, 140, L"追梦拼图游戏V1.1.0版本");
 MOUSEMSG m;
 while (1)
 {
 m = GetMouseMsg();
 if (m.x >= 120 && m.x <= 180 && m.y >= 60 && m.y <= 80)
 {
 setlinecolor(BLACK);
 rectangle(120 - 2, 60 - 2, 180 + 2, 80 + 2);
 if (m.uMsg==WM_LBUTTONDOWN)
 {
 break;
 }
 }
 else if (m.x >= 120 && m.x <= 180 && m.y >=85 && m.y <= 105)
 {
 setlinecolor(BLACK);
 rectangle(120 - 2, 85 - 2, 180 + 2, 105 + 2);
 if (m.uMsg == WM_LBUTTONDOWN)
 {
 exit(0);
 }
 }
 else
 {
 setlinecolor(WHITE);
 rectangle(120 - 2, 60 - 2, 180 + 2, 80 + 2);
 rectangle(120 - 2, 85 - 2, 180 + 2, 105 + 2);
 }
 }
 closegraph();
}
void loadResource()//加载资源
{
 srand((unsigned int)time(NULL));
 int length=8;
 int pos = 0;
 int i, j;
 for (i = 0; i < 8; i++)
 {
 array1D[i] = i;
 }
 for (i = 0; i < 3; i++)
 {
 for (j = 0; j < 3; j++)
 {
 if (i == 2 && j == 2)
 {
 array2D[i][j] = 8;
 break;
 }
 pos = rand() % length;
 array2D[i][j] = array1D[pos];
 for (int k = pos; k < length; k++)
 {
 array1D[k] = array1D[k + 1];
 }
 length--;
 }
 if (i == 2 && j == 2)
 {
 array2D[i][j] = 8;
 break;
 }
 }
 loadimage(&img, L"图1.jpg", 300, 300);
 loadimage(&block, L"空目的地.jpg", 100, 100);
}
void drawMap() //贴图
{
 for (int i = 0; i < 3; i++)
 {
 for (int j = 0; j < 3; j++)
 {
 int x = 100 * j;
 int y = 100 * i;
 switch (array2D[i][j])
 {
 case 0:
 case 1:
 case 2:
 putimage(x, y, 100, 100, &img, array2D[i][j] * 100, 0);
 break;
 case 3:
 case 4:
 case 5:
 putimage(x, y, 100, 100, &img, (array2D[i][j] - 3) * 100, 100);
 break;
 case 6:
 case 7:
 putimage(x, y, 100, 100, &img, (array2D[i][j] - 6) * 100, 200);
 break;
 case 8:
 putimage(x, y, &block);
 break;
 }
 }
 }
}
void playGame() //游戏过程
{
 MOUSEMSG m;
 int i, j;
 int i_MOUSE, j_MOUSE;
 while (1)
 {
 drawMap();
 searchPos(array2D, 3, 3);
 i = myPos.i;
 j = myPos.j;
 m = GetMouseMsg();
 switch (m.uMsg)
 {
 case WM_LBUTTONDOWN:
 i_MOUSE = m.y / 100;
 j_MOUSE = m.x / 100;
 if (i_MOUSE == i + 1 && j_MOUSE == j)
 {
 array2D[i][j] = array2D[i_MOUSE][j_MOUSE];
 array2D[i_MOUSE][j_MOUSE] = 8;
 }
 if (i_MOUSE == i - 1 && j_MOUSE == j)
 {
 array2D[i][j] = array2D[i_MOUSE][j_MOUSE];
 array2D[i_MOUSE][j_MOUSE] = 8;
 }
 if (i_MOUSE == i && j_MOUSE == j+1)
 {
 array2D[i][j] = array2D[i_MOUSE][j_MOUSE];
 array2D[i_MOUSE][j_MOUSE] = 8;
 }
 if (i_MOUSE == i && j_MOUSE == j-1)
 {
 array2D[i][j] = array2D[i_MOUSE][j_MOUSE];
 array2D[i_MOUSE][j_MOUSE] = 8;
 }
 break;
 }
 }
}
int main()
{
 drawMenu();
 initgraph(300, 300);
 loadResource();
 drawMap();
 playGame();
 system("pause");
 return 0;
}

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

(0)

相关推荐

  • C语言实现拼图游戏源码

    本文实例为大家分享了C语言实现拼图游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> int step=0; void map()//游戏菜单函数. { printf("▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); printf("█ 拼 图 游 戏 █\n"); printf("█

  • C语言实现拼图游戏

    本文实例为大家分享了C语言实现拼图游戏的具体代码,供大家参考,具体内容如下 一.完成拼图所要实现的功能 1.实现图形界面 一维数组,二维数组,图形库里面的贴图 2.绘制一个开始界面的菜单 图形库(画矩形,填充颜色),文字输出,鼠标操作 3.加载资源 切割技术,用到随机函数,随机产生一维数组下标,然后赋值给二维数组进行初始化. 4.贴图 我这里3行3列的.遍历二维数组进行 贴图. 5.游戏过程 主要是鼠标操作,遇到空白的一块,左右上下都可以交换. 二.效果展示 三.代码实现 /**********

  • C++语言实现拼图游戏详解

    目录 开发环境:Visual Studio 2019,easyx图形库. 游戏功能列表: 游戏效果 一.头文件和基本量 二.封面 三.数据初始化 四.封面规则按钮 五.构造拼图 六.绘图函数 七.背景音乐 八.数据更新 九.通关判断 十.完整程序 总结 开发环境:Visual Studio 2019,easyx图形库. easyx下载官网: EasyX Graphics Library for C++ https://easyx.cn/ easyx使用文档: EasyX 文档 - 函数说明 ht

  • C语言编写简单拼图游戏

    本文为大家分享了使用C语言编写一个简单的拼图游戏,供大家参考,具体内容如下 制作一款拼图小游戏 #include <graphics.h> // 引用图形库头文件 #include <conio.h> #include<stdio.h> typedef enum { UP, DOWN, LEFT, RIGHT, UNKOWN } DRCT; const int level = 5; DRCT getKey() { char key; DRCT ret; key = _g

  • C语言实现拼图小游戏

    最近闲着无聊,写了一个拼图游戏,正好学习一下图片的处理. 效果图如下: 程序中用到了图形库操作,把一张图片分割,用一个二维数组代表各个碎片,初始打乱数组就可以得到打乱的图片. void get_arr() { int book[10] = { 0 }; srand((unsigned int)time(NULL)); //设置时间种子 for(int i=0; i<3; i++) //随机arr数组,打乱图片顺序 for (int j = 0; j < 3; j++) { if (i == 2

  • C#拼图游戏编写代码(2)

    前言:在C#拼图游戏编写代码程序设计 之 C#实现<拼图游戏>(上),上传了各模块代码,而在本文中将详细剖析原理,使读者更容易理解并学习,程序有诸多问题,欢迎指出,共同学习成长! 正文: 拼图是一个非常经典的游戏,基本每个人都知道他的玩法,他的开始,运行,结束.那么,当我们想要做拼图的时候如何入手呢?答案是:从现实出发,去描述需求(尽量描述为文档),当我们拥有了全面的需求,就能够提供可靠的策略,从而在代码中实现,最终成为作品! (一)需求: (这个需求书写较为潦草,为广大小白定制,按照最最最普

  • Android实现九宫格拼图游戏

    经常有同学问到,使用Android能不能开发游戏呢?能开发那些游戏呢?由于操作系统和开发语言局限,一般开发安卓手机游戏,我们很少使用其自带语言开发.而是使用指定编译器和语言完成,能够使界面更流畅,用户体验感更好.但是对于一些常见小游戏,使用JAVA语言开发运行,还是不在话下的,那在本篇博客中,我将给大家简单介绍一下,九宫格拼图游戏的开发过程,基本逻辑和思路我将在代码的注释中体现. 九宫格拼图游戏,相信大家小时候都玩过.大概逻辑是,将1张图采用3*3的方式,分成9部分,将第3行3列的小图取出,打乱

  • 利用原生的JavaScript实现简单拼图游戏

    前言 本篇主要讲解,如何利用原生的 JavaScript 来实现一个简单的拼图小游戏. 一.游戏的基础逻辑 想用一门语言来开发游戏,必须先了解如何使用这门语言来实现一些基础逻辑,比如图像的绘制.交互的处理.定时器等. 1.图形绘制 图形绘制是一切的基础,这里使用 JavaScript 在 canvas 上进行绘制.即先在 html 中创建 canvas 元素,然后在 JavaScript 中,通过 id 拿到这个元素,并且通过 canvas 拿到对应的上下文环境 context ,为后续的绘图做

  • Android Studio做超好玩的拼图游戏 附送详细注释源码

    目录 一.项目概述 二.开发环境 三.需求分析 四.实现过程 1.拼图游戏布局绘制 2.拼图游戏时间计时 3.拼图游戏打乱显示 4.拼图游戏碎片位置切换 5.拼图游戏成功的条件 6.拼图游戏重新开始 五.运行效果 六.项目总结 七.项目源码 一.项目概述 之前有不少粉丝私信我说,能不能用Android原生的语言开发一款在手机上运行的游戏呢? 说实话,使用java语言直接开发游戏这个需求有点难,因为一些比较复杂的游戏都是通过cocos2D或者Unity3D等游戏引擎开发出来的,然后再移植到Andr

  • 教你使用Python的pygame模块实现拼图游戏

    目录 pygame介绍 安装pygame pygame常用模块 pygame入门案例 pygame实现拼图游戏 总结 pygame介绍 Python Pygame 是一款专门为开发和设计 2D 电子游戏而生的软件包,它支 Windows.Linux.Mac OS 等操作系统,具有良好的跨平台性.Pygame 由 Pete Shinners 于 2000 年开发而成,是一款免费.开源的的软件包,因此您可以放心地使用它来开发游戏,不用担心有任何费用产生. Pygame 在 SDL(Simple Di

随机推荐