2048小游戏 c++

这个游戏需要用到一个图形库。graphics.h

前段时间由于自己VS2019的重装,以前安装的图形库没了,所以又重新安装了一遍,在这顺便给大家分享一下

好多朋友还不知道在哪里下载及安装 EasyX <graphics.h>

关于Easy-x的下载:http://www.easyx.cn/downloads/

下载最新版
请添加图片描述
找到软件安装位置点击安装

1.创建项目

2.在项目的源文件夹下创建一个文件夹image请添加图片描述
3.把下面十二张图片重命名好放进刚创建的文件夹在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.总共需要创建两个文件,一个main.cpp,一个是2048.h。本人使用的编译器是vs2019.

以下是main.cpp的内容
————————————————————————————————————————————————————————————————————————————————
#include"2048.h"


int main() {
   
	loadResource();
	initgraph(400, 400);
	randIntNum(0);
	drawMap();

	while (gameOver()) {
   
		
		keyDown();
		drawMap();
	}
	
	
	
	
	
	printf("游戏结束");
	system("pause");
}
以下是2048.h的内容
——————————————————————————————————————————————————————————————————————————————————
#pragma once
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
using namespace std;


int map[4][4] = {
    0 };


IMAGE img[12];

int imgIndex[12] = {
    0,2,4,8,16,32,64,128,256,512,1024,2048 };





void loadResource() {
   

	for (int i = 0; i < 12; i++) {
   

		char fileName[20] = "";
		sprintf_s(fileName, "image/%d.bmp", imgIndex[i]);
		
		loadimage(img + i, fileName);

	}

}


void randIntNum(int a) {
   

	if (!a) {
   
		int i, j;

		srand((unsigned int)time(NULL));

		while (1) {
   
			i = rand() % 4;
			j = rand() % 4;
			if (map[i][j] == 0) {
   
				map[i][j
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的C++实现2048小游戏的示例代码: ```c++ #include <iostream> #include <ctime> #include <conio.h> #include <Windows.h> using namespace std; const int ROW = 4, COL = 4; // 定义方格行数和列数 int game[ROW][COL]; // 存储游戏数据的二维数组 // 游戏初始化函数 void initGame() { // 初始化游戏数据,将所有元素置为0 for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { game[i][j] = 0; } } // 随机生成两个初始值为2的方块 srand(time(NULL)); // 随机数种子 int count = 0; while (count < 2) { int x = rand() % ROW; int y = rand() % COL; if (game[x][y] == 0) { game[x][y] = 2; count++; } } } // 显示游戏界面函数 void showGame() { system("cls"); // 清屏 // 显示游戏界面 cout << "-----------------------------" << endl; for (int i = 0; i < ROW; i++) { cout << "|"; for (int j = 0; j < COL; j++) { if (game[i][j] == 0) { cout << " |"; } else { cout << " " << game[i][j] << " |"; } } cout << endl; cout << "-----------------------------" << endl; } } // 判断游戏是否结束函数 bool isGameOver() { // 判断是否还有空位 for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { if (game[i][j] == 0) { return false; } } } // 判断相邻的方块是否相等 for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL - 1; j++) { if (game[i][j] == game[i][j + 1]) { return false; } } } for (int i = 0; i < ROW - 1; i++) { for (int j = 0; j < COL; j++) { if (game[i][j] == game[i + 1][j]) { return false; } } } return true; } // 向左移动函数 void moveLeft() { for (int i = 0; i < ROW; i++) { // 先将非零元素移到左边 int k = 0; for (int j = 0; j < COL; j++) { if (game[i][j] != 0) { game[i][k++] = game[i][j]; } } // 将左边空白处置为0 for (; k < COL; k++) { game[i][k] = 0; } // 合并相邻的相同元素 for (int j = 0; j < COL - 1; j++) { if (game[i][j] == game[i][j + 1]) { game[i][j] *= 2; game[i][j + 1] = 0; } } // 再次移动非零元素 k = 0; for (int j = 0; j < COL; j++) { if (game[i][j] != 0) { game[i][k++] = game[i][j]; } } // 将左边空白处置为0 for (; k < COL; k++) { game[i][k] = 0; } } } // 向右移动函数 void moveRight() { for (int i = 0; i < ROW; i++) { // 先将非零元素移到右边 int k = COL - 1; for (int j = COL - 1; j >= 0; j--) { if (game[i][j] != 0) { game[i][k--] = game[i][j]; } } // 将右边空白处置为0 for (; k >= 0; k--) { game[i][k] = 0; } // 合并相邻的相同元素 for (int j = COL - 1; j > 0; j--) { if (game[i][j] == game[i][j - 1]) { game[i][j] *= 2; game[i][j - 1] = 0; } } // 再次移动非零元素 k = COL - 1; for (int j = COL - 1; j >= 0; j--) { if (game[i][j] != 0) { game[i][k--] = game[i][j]; } } // 将右边空白处置为0 for (; k >= 0; k--) { game[i][k] = 0; } } } // 向上移动函数 void moveUp() { for (int j = 0; j < COL; j++) { // 先将非零元素移到上面 int k = 0; for (int i = 0; i < ROW; i++) { if (game[i][j] != 0) { game[k++][j] = game[i][j]; } } // 将上面空白处置为0 for (; k < ROW; k++) { game[k][j] = 0; } // 合并相邻的相同元素 for (int i = 0; i < ROW - 1; i++) { if (game[i][j] == game[i + 1][j]) { game[i][j] *= 2; game[i + 1][j] = 0; } } // 再次移动非零元素 k = 0; for (int i = 0; i < ROW; i++) { if (game[i][j] != 0) { game[k++][j] = game[i][j]; } } // 将上面空白处置为0 for (; k < ROW; k++) { game[k][j] = 0; } } } // 向下移动函数 void moveDown() { for (int j = 0; j < COL; j++) { // 先将非零元素移到下面 int k = ROW - 1; for (int i = ROW - 1; i >= 0; i--) { if (game[i][j] != 0) { game[k--][j] = game[i][j]; } } // 将下面空白处置为0 for (; k >= 0; k--) { game[k][j] = 0; } // 合并相邻的相同元素 for (int i = ROW - 1; i > 0; i--) { if (game[i][j] == game[i - 1][j]) { game[i][j] *= 2; game[i - 1][j] = 0; } } // 再次移动非零元素 k = ROW - 1; for (int i = ROW - 1; i >= 0; i--) { if (game[i][j] != 0) { game[k--][j] = game[i][j]; } } // 将下面空白处置为0 for (; k >= 0; k--) { game[k][j] = 0; } } } int main() { initGame(); // 初始化游戏 showGame(); // 显示游戏界面 while (!isGameOver()) { char ch = getch(); // 获取键盘输入 switch (ch) { case 'a': moveLeft(); break; case 'd': moveRight(); break; case 'w': moveUp(); break; case 's': moveDown(); break; } // 随机生成一个新的方块 int x, y; do { x = rand() % ROW; y = rand() % COL; } while (game[x][y] != 0); game[x][y] = 2; showGame(); // 显示游戏界面 } cout << "Game Over!" << endl; return 0; } ``` 该示例代码使用了Windows API中的`system()`函数和`getch()`函数,因此只能在Windows环境下编译运行。如果需要在其他环境下运行,需要使用相应的替代函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值