设为首页 加入收藏

TOP

C++实现2048小游戏(一)
2019-09-06 00:26:38 】 浏览:62
Tags:实现 2048 小游戏

代码如下:

  1 #define _CRT_SECURE_NO_WARNINGS//去掉编译器内部扩增问题
  2 #include<stdio.h>
  3 #include<stdlib.h>
  4 #include<math.h>
  5 #include<graphics.h>//需要下载图形库
  6 #include<conio.h>
  7 #include<time.h>
  8 #include<string>
  9 #include<fstream>
 10 #include<iostream>
 11 #include<sstream>
 12 using namespace std;
 13 
 14 namespace
 15 {
 16 IMAGE image[12];
 17 int imageIndex[12];
 18 int map[4][4] = { 2 };
 19 bool isOver = true;
 20 bool gameOver = false;
 21 enum direction
 22 {
 23 Up, Down, Left, Right
 24 };
 25 };
 26 
 27 void SetImageIndex();//设置图片编号
 28 void loadResource();
 29 void drawMap();
 30 void randIntNum();
 31 void keyDownAndDraw();
 32 bool TurnLeft(int s[4][4]);
 33 void ChangeOnKeyDown(direction Direction);
 34 
 35  
 36 
 37 int main()
 38 {
 39 SetImageIndex();
 40 loadResource();
 41 initgraph(60*4,60*4+120);//游戏界面大小
 42 drawMap();
 43 keyDownAndDraw();
 44 system("pause");//防止闪屏
 45 //closegraph();
 46 //system("pause");
 47 return 0;
 48 }
 49 void SetImageIndex()
 50 {
 51 imageIndex[0] = 0;
 52 for (int i = 1; i < 12; i++)
 53 {
 54 imageIndex[i] = int(pow(2, i));
 55 }
 56 }
 57 void loadResource()//加载图片
 58 {
 59 for (int i = 0; i < 12; i++)
 60 {
 61 char fileName[20] = "";
 62 sprintf(fileName, "%d.bmp", imageIndex[i]);//拼接
 63 loadimage(image + i, fileName,60,60);
 64 }
 65 }
 66 
 67 //画地图
 68 void drawMap()
 69 {
 70 string out;
 71 int HistryHighlyScore = 0;
 72 ifstream IScore("Score.txt");//创建文件读取历史最高分
 73 if (!IScore)
 74 {
 75 ofstream OScore("Score.txt");
 76 IScore.open("Score.txt");
 77 }
 78 getline(IScore, out);
 79 char Score[10];
 80 char HighlyScore[100];
 81 int Sum=0;
 82 setbkcolor(RGB(244, 215, 215));
 83 cleardevice();
 84 settextcolor(WHITE);//设置文字颜色
 85 settextstyle(35, 0, "楷体");//设置文字格式
 86 outtextxy(50, 10, "2048游戏");
 87 settextcolor(YELLOW);//设置文字颜色
 88 settextstyle(25, 0, "楷体");//设置文字格式
 89 for (int i = 0; i < 4; i++)//计算分数
 90 {
 91 for (int j = 0; j < 4; j++)
 92 {
 93 if (map[i][j]>4)
 94 {
 95 Sum += map[i][j] * sqrt(map[i][j]);
 96 }
 97 }
 98 }
 99 sprintf(Score, "分数:%d", Sum);
100 outtextxy(10, 300,Score);
101 for (int i = 0; i < out.length(); i++)
102 {
103 HighlyScore[i] = out[i];
104 }
105 stringstream mid;
106 mid << out;
107 mid >> HistryHighlyScore;
108 if (HistryHighlyScore>Sum)
109 {
110 HighlyScore[out.length()] = '\0';
111 settextcolor(RED);//设置文字颜色
112 settextstyle(25, 0, "楷体");//设置文字格式
113 outtextxy(10, 330, "历史最高:");
114 outtextxy(130, 330, HighlyScore);
115 }
116 else
117 {
118 char Score1[20];
119 settextcolor(RED);//设置文字颜色
120 settextstyle(25, 0, "楷体");//设置文字格式
121 sprintf(Score1, "历史最高:%d", Sum);
122 outtextxy(10, 330,Score1);
123 ofstream OScore1;
124 OScore1.open("Score.txt");
125 OScore1<<Sum;
126 OScore1.close();
127 }
128 IScore.close();
129 //根据二维数组去画图
130 int x, y, k;
131 for (int i = 0; i < 4; i++)
132 {
133 for (int j = 0; j < 4; j++)
134 {
135 x = 60 * j;
136 y = 60 * i + 55;
137 for ( k = 0; k < 12; k++)
138 {
139 if (imageIndex[k] == map[i][j])
140 {
141 break;
142 }
  
		
C++实现2048小游戏(一) https://www.cppentry.com/bencandy.php?fid=49&id=250199

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据结构:队列queue 函数push() .. 下一篇c++无关类型指针的强制转换的一个..