C++实现拼图游戏代码(graphics图形库)

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

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<graphics.h>
#include<string.h>
int map[4][3];
int num = 0;
IMAGE image1, image2, image3, image4, image5, image6, image7, image8, image9, image10, image11, image12, image13;
void Initmap()//初始化数组
{
 for (int i = 0; i < 4; i++)
 {
  for (int j = 0; j < 3; j++)
  {
   map[i][j] = rand() % 100;
  }
 }
 map[2][3] = 100; 

}
void PaintInit()//获取图片地址内容
{
 loadimage(&image1, L"./image/1.jpg", 100, 100);
 loadimage(&image2, L"./image/2.jpg", 100, 100);
 loadimage(&image3, L"./image/3.jpg", 100, 100);
 loadimage(&image4, L"./image/4.jpg", 100, 100);
 loadimage(&image5, L"./image/5.jpg", 100, 100);
 loadimage(&image6, L"./image/6.jpg", 100, 100);
 loadimage(&image7, L"./image/7.jpg", 100, 100);
 loadimage(&image8, L"./image/8.jpg", 100, 100);
 loadimage(&image9, L"./image/9.jpg", 100, 100);
 loadimage(&image10, L"./image/10.jpg", 100, 100);
 loadimage(&image11, L"./image/11.jpg", 100, 100);
 loadimage(&image12, L"./image/back.jpg", 400, 200);
 loadimage(&image13, L"./image/border.jpg", 50, 300); 

}
int finMin(int a)//找到数组里面最小的数,然后将设定的图片给对应的数;
{
 int flag=1; 

 for (int i = 0; i < 4; i++)
 {
  for (int j = 0; j < 3; j++)
  {
   if (a > map[i][j])
   {
    flag++;//如过flag 不加上去不变表示没有比他大的数
   }
  }
 }
 return flag;
}
void GameInit()//游戏初始化
{ 

 int min=map[0][0];
 putimage(450, 0, &image12);
 putimage(400, 0, &image13);
 for (int i = 0; i < 4; i++)
 {
  for (int j = 0; j < 3; j++)
  {
    if (finMin(map[i][j]) == 1)
    {
     putimage(i * 100, j * 100, &image1);
    }
    if (finMin(map[i][j]) == 2)
    {
     putimage(i * 100, j * 100, &image2);
    }
    if (finMin(map[i][j]) == 3)
    {
     putimage(i * 100, j * 100, &image3);
    }
    if (finMin(map[i][j]) == 4)
    {
     putimage(i * 100, j * 100, &image4);
    }
    if (finMin(map[i][j]) == 5)
    {
     putimage(i * 100, j * 100, &image5);
    }
    if (finMin(map[i][j]) == 6)
    {
     putimage(i * 100, j * 100, &image6);
    }
    if (finMin(map[i][j]) == 7)
    {
     putimage(i * 100, j * 100, &image7);
    }
    if (finMin(map[i][j]) == 8)
    {
     putimage(i * 100, j * 100, &image8);
    }
    if (finMin(map[i][j]) == 9)
    {
     putimage(i * 100, j * 100, &image9);
    }
    if (finMin(map[i][j]) == 10)
    {
     putimage(i * 100, j * 100, &image10);
    }
    if (finMin(map[i][j]) == 11)
    {
     putimage(i * 100, j * 100, &image11);
    } 

  }
 } 

}
void PlayGame()
{
 int x, y;
 MOUSEMSG m;
 int newA;
 char ch;
 int r, c; //找到当前空白块的下标 //
 for (int i = 0; i < 4; i++)
 {
  for (int j = 0; j < 3; j++)
  {
   if (map[i][j] == 100)
   {
    r = i;
    c = j;
   }
  }
 } 

 ch = getch();
 switch (ch)
 { 

 case 'W':case 'w' :
 { 

  if (c - 1<0)return;
  newA = map[r][c];
  map[r][c] = map[r][c-1];
  map[r][c-1] = newA;
  num++;
  break;
 }
 case 'S':case 's':
 {
  if (c + 1>2)return;
  newA = map[r][c];
  map[r][c] = map[r][c+1];
  map[r][c+1] = newA;
  num++;
  break;
 }
 case 'A':case 'a':
 {
  if (r - 1<0)return;
  newA = map[r][c];
  map[r][c] = map[r-1][c];
  map[r-1][c] = newA;
  num++;
  break;
 }
 case 'd':case 'D':
 {
  if(r+1>3)return;
  newA = map[r][c];
  map[r][c] = map[r+1][c];
  map[r+1][c] = newA;
  num++;
  break;
 }
 }
}
int main()//最后如果图像游戏如果拼完整后,数组的数会是从小到大的,以此来判别是否拼图完整
{
 TCHAR sql[200];
 initgraph(850, 300);
 Initmap();
 PaintInit(); 

 while (1)
 {
  cleardevice();
  BeginBatchDraw();
  GameInit();
  outtextxy(650, 210, _T("原图"));
  _stprintf(sql, _T("走了:%d"), num);
  outtextxy(500, 250, sql);
  EndBatchDraw();
  PlayGame();
 }
 getch();
 closegraph();
 system("pause");
 return
}

效果图:

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

(0)

相关推荐

  • C++控制台实现随机生成路径迷宫游戏

    本程序是在控制台下随机生成迷宫路径的一个C++程序,可以通过修改宏定义 M 和 N 的值来修改迷宫的长度和宽度,运行程序后 按1开始游戏 按2退出游戏,游戏入口在左上角,出口在右下角,人物(星星)到达右下角出口提示成功闯关. #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<iostream.h> #include<ctime

  • 贪吃蛇游戏C++命令行版实例代码

    本文实例讲述了贪吃蛇游戏C++命令行版的实现代码,是非常经典的游戏.分享给大家供大家参考.具体实现方法如下: 众所周知,贪吃蛇游戏是经典的计算机游戏. 游戏描述如下: 1. 贪吃蛇可以自动直线前进,或者玩家可以通过方向键操纵贪吃蛇上下左右前进,每次前进一格. 2. 贪吃蛇在规定的区域内活动,当: ①贪吃蛇触碰到墙壁时: ②贪吃蛇的蛇头触碰到蛇身或者蛇尾时: ③玩家的键盘输入不是方向键时: 命令行显示"Game Over!"并且退出游戏. 3. 贪吃蛇活动的区域内每次随机产生一颗&quo

  • C++实现简单的扫雷游戏(控制台版)

    C++新手的代码,请各位多包涵. 用C++写的一个简单的控制台版扫雷游戏.玩家通过输入方块的坐标来翻开方块. 只是一个雏形,能够让玩家执行翻开方块的操作并且判断输赢,还未添加标记方块.游戏菜单.记录游戏时间.重新开一局等等的功能. 玩家输入坐标的方式来翻开方块只适用于小型的"雷区",若"雷区"大了,用坐标会变得很不方便. 代码片段扫雷V1.1 #include<stdio.h> #include<Windows.h> #define YELL

  • 迷宫游戏控制台版C++代码

    本文实例分享了C++设计的一个可以调整大小的迷宫游戏,给定迷宫的入口.如果存在出口,程序能够显示行走的路径,并最终到达出口,并输出"成功走出迷宫":如果不存在出口,程序也能够显示行走的过程,并最终回退到入口,并输出"回退到入口". //这是一个迷宫游戏 #include<iostream> #include<ctime> #include<cstdlib>/*用于生成随机数,形成随机变化的迷宫*/ #include<ioma

  • C++ 迷宫游戏实现代码

    C++ 迷宫游戏实现代码 题目 通过让游戏角色自动寻找迷宫出口,走出迷宫,来练习C++面向对象之封装的基础知识.迷宫图如下所示,其中X表示墙. 1.程序分析 走出去的原理:遵循右手规则或左手规则.右手扶墙走,就会走出迷宫,反之,亦然. step1 创建迷宫类,打印出迷宫地图. step2 创建走迷宫的人的类. 2.程序实现 MazeMap.h #ifndef MAZEMAP_H #define MAZEMAP_H #include <iostream> #include <Windows

  • C++基于控制台实现的贪吃蛇小游戏

    本文实例讲述了C++基于控制台实现的贪吃蛇小游戏.分享给大家供大家参考.具体实现方法如下: #include <windows.h> #include <time.h> #include <stdio.h> #define MAX 100 #define UP 1 #define DOWN 2 #define LEFT 3 #define RIGHT 4 #define MOVING 5 #define STOP 0 HANDLE hMain_Out = NULL; H

  • C++面向对象实现五子棋小游戏

    尽量将面向对象的思想融入进程序中 ChessBoard.h //ChessBoard.h #pragma once #define ROW 15 #define COL 15 #include<iostream> using namespace std; class ChessBoard//棋盘类 { public: char m_cSquare[ROW][COL]; public: ChessBoard(); void show(); }; ChessBoard.cpp //ChessBoa

  • C++ 实现2048游戏示例

    这游戏前一段时间传的很火,前几天早上实在太无聊了,就决定把这游戏自己也写一个. 前后写了一个多小时吧,大概300行左右,没什么复杂算法,不过实在懒得去优化了,但估计优化完能控制在200行以下,有兴趣的朋友可以自己优化一下. 说明:我一开始玩的是IOS APP版的TRHEES,后来才玩的2048,两者在滑动的规则上有些区别,本人这个版本是这两者的结合. 最后,祝试玩愉快! 界面丑陋,求不笑. 以下是源代码: 复制代码 代码如下: /*By Reason*/#include<iostream>#i

  • 用VC++6.0的控制台实现2048小游戏的程序

    首先感谢这位大侠的无私分享,仔细学习这个程序以后收获很多,试着添加一些注释 源程序是从开源中国看到的,原作者是 刘地(sir?) 地址为http://www.oschina.net/code/snippet_593413_46040 geek_monkey于2015年3月5日为拜读该程序,受益匪浅 为了方便自己,以及更多初学者阅读,我试着写了写了注释供参考 我是C语言初学者,如有错误希望指正.轻喷 复制代码 代码如下: #include <stdlib.h> #include <stdi

  • C/C++实现的游戏角色名称名字随机生成代码

    #ifndef __NAME_H__ #define __NAME_H__ class CName { public: CName(); virtual ~CName(); const char* GetName(); protected: void InitSurname(); void InitName(); char* m_pSurname_OneDimensional; char** m_ppSurname; // 姓 char* m_pName_OneDimensional; char

随机推荐