C++ EasyX 升级数字游戏 1.1.1

博客介绍了C++使用EasyX库进行的一个小游戏的1.1.1版本更新。虽然作者因学业繁忙无法保证频繁更新,但期待通过读者的点赞和收藏来推动更大更新。更新内容包括`main.cpp`和`game.h`两个源文件的改进。
摘要由CSDN通过智能技术生成

最近学业紧,任务重,我也不能保证每周都能更新,见谅。

这次就是一个小更,要是想要大更新,还是得靠点赞和收藏[doge]

注:声音是从网上下过来的

代码

main.cpp

#include "game.h"
const int w = mapw * sizes, h = maph * sizes;
const int frame = 30;

int blockspeed = 60;

void Init() {

	if (speed == 1) blockspeed = 60;
	if (speed == 2) blockspeed = 30;
	if (speed == 3) blockspeed = 20;
	if (speed == 4) blockspeed = 15;
	if (speed == 5) blockspeed = 12;
	if (speed == 6) blockspeed = 10;
	if (speed == 7) blockspeed = 9;
	if (speed == 8) blockspeed = 8;
	if (speed == 9) blockspeed = 7;
	i
以下是一个使用C++EasyX图形库实现的换图游戏的示例代码: ```cpp #include <graphics.h> #include <conio.h> #include <time.h> #include <stdlib.h> #define ROW 4 #define COL 4 #define SIZE 100 IMAGE img[11]; int map[ROW][COL] = {0}; int score = 0; void init(); void draw(); void update(); void addRandom(); bool isGameOver(); bool canMove(); void moveLeft(); void moveRight(); void moveUp(); void moveDown(); void swap(int& a, int& b); int main() { initgraph(4 * SIZE, 4 * SIZE); init(); draw(); while (!isGameOver()) { if (canMove()) { update(); draw(); } else { break; } } _getch(); closegraph(); return 0; } void init() { srand((unsigned)time(NULL)); loadimage(&img[0], L"0.jpg", SIZE, SIZE); loadimage(&img[2], L"2.jpg", SIZE, SIZE); loadimage(&img[4], L"4.jpg", SIZE, SIZE); loadimage(&img[8], L"8.jpg", SIZE, SIZE); loadimage(&img[16], L"16.jpg", SIZE, SIZE); loadimage(&img[32], L"32.jpg", SIZE, SIZE); loadimage(&img[64], L"64.jpg", SIZE, SIZE); loadimage(&img[128], L"128.jpg", SIZE, SIZE); loadimage(&img[256], L"256.jpg", SIZE, SIZE); loadimage(&img[512], L"512.jpg", SIZE, SIZE); loadimage(&img[1024], L"1024.jpg", SIZE, SIZE); loadimage(&img[2048], L"2048.jpg", SIZE, SIZE); addRandom(); addRandom(); } void draw() { cleardevice(); setbkcolor(WHITE); settextcolor(BLACK); settextstyle(30, 0, L"Consolas"); wchar_t str[10]; swprintf_s(str, L"Score: %d", score); outtextxy(0, 0, str); for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { int x = j * SIZE; int y = i * SIZE + 50; int num = map[i][j]; if (num == 0) { putimage(x, y, &img[0]); } else { putimage(x, y, &img[num]); } } } } void update() { int dir = _getch(); switch (dir) { case 'a': moveLeft(); break; case 'd': moveRight(); break; case 'w': moveUp(); break; case 's': moveDown(); break; default: break; } addRandom(); } void addRandom() { int count = 0; for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { if (map[i][j] == 0) { count++; } } } if (count == 0) { return; } int index = rand() % count; int num = rand() % 2 == 0 ? 2 : 4; count = 0; for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { if (map[i][j] == 0) { if (count == index) { map[i][j] = num; return; } count++; } } } } bool isGameOver() { if (canMove()) { return false; } for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { if (map[i][j] == 2048) { return false; } } } return true; } bool canMove() { for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { if (map[i][j] == 0) { return true; } if (j < COL - 1 && map[i][j] == map[i][j + 1]) { return true; } if (i < ROW - 1 && map[i][j] == map[i + 1][j]) { return true; } } } return false; } void moveLeft() { for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL - 1; j++) { for (int k = j + 1; k < COL; k++) { if (map[i][k] > 0) { if (map[i][j] == 0) { swap(map[i][j], map[i][k]); } else if (map[i][j] == map[i][k]) { map[i][j] *= 2; score += map[i][j]; map[i][k] = 0; } break; } } } } } void moveRight() { for (int i = 0; i < ROW; i++) { for (int j = COL - 1; j > 0; j--) { for (int k = j - 1; k >= 0; k--) { if (map[i][k] > 0) { if (map[i][j] == 0) { swap(map[i][j], map[i][k]); } else if (map[i][j] == map[i][k]) { map[i][j] *= 2; score += map[i][j]; map[i][k] = 0; } break; } } } } } void moveUp() { for (int j = 0; j < COL; j++) { for (int i = 0; i < ROW - 1; i++) { for (int k = i + 1; k < ROW; k++) { if (map[k][j] > 0) { if (map[i][j] == 0) { swap(map[i][j], map[k][j]); } else if (map[i][j] == map[k][j]) { map[i][j] *= 2; score += map[i][j]; map[k][j] = 0; } break; } } } } } void moveDown() { for (int j = 0; j < COL; j++) { for (int i = ROW - 1; i > 0; i--) { for (int k = i - 1; k >= 0; k--) { if (map[k][j] > 0) { if (map[i][j] == 0) { swap(map[i][j], map[k][j]); } else if (map[i][j] == map[k][j]) { map[i][j] *= 2; score += map[i][j]; map[k][j] = 0; } break; } } } } } void swap(int& a, int& b) { int temp = a; a = b; b = temp; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值