当前位置: 首页 > news >正文

C++贪吃蛇---详细步骤

软件准备:

  • EasyX
  • VS 2022

一、游戏窗口绘制

// 导入图形界面库 EasyX
#include <graphics.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 游戏主循环while (true) {}return 0;
}

在这里插入图片描述

二、蛇

1、初始化数据

// 导入图形界面库 EasyX
#include <graphics.h>
//控制键盘的头文件
#include<conio.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;
#define MAX_SNAKE 500  // 常量struct Pos {int x;int y;DWORD color;//DWORD 是 Windows API 中定义的数据类型
};struct Snake {int num;      // 蛇身体的节数int dir;      // 蛇的方向int score;    // 分数int size;     // 蛇的宽和高int speed;    // 蛇的速度// 记录蛇的坐标数组struct Pos coor[MAX_SNAKE];
};struct Snake snake;//结构体变量enum DIR
{UP,DOWN,LEFT,RIGHT
};// 初始化一下数据
void GameInit() {//蛇的身体的颜色随机变化srand(GetTickCount());snake.num = 3;snake.dir = RIGHT;snake.score = 0;snake.size = 10;snake.speed = 10;// 初始化蛇身位置和颜色for (int i = 0; i < snake.num; i++) {snake.coor[i].x = 20 - i * 10;snake.coor[i].y = 0;snake.coor[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}
}int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 初始化蛇的数据GameInit();// 游戏主循环while (true) {}return 0;
}

在这里插入图片描述

2、画蛇

// 导入图形界面库 EasyX
#include <graphics.h>
//控制键盘的头文件
#include<conio.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;
#define MAX_SNAKE 500  // 常量struct Pos {int x;int y;DWORD color;//DWORD 是 Windows API 中定义的数据类型
};struct Snake {int num;      // 蛇身体的节数int dir;      // 蛇的方向int score;    // 分数int size;     // 蛇的宽和高int speed;    // 蛇的速度// 记录蛇的坐标数组struct Pos coor[MAX_SNAKE];
};struct Snake snake;//结构体变量enum DIR
{UP,DOWN,LEFT,RIGHT
};// 初始化一下数据
void GameInit() {//蛇的身体的颜色随机变化srand(GetTickCount());snake.num = 3;snake.dir = RIGHT;snake.score = 0;snake.size = 10;snake.speed = 10;// 初始化蛇身位置和颜色for (int i = 0; i < snake.num; i++) {snake.coor[i].x = 20 - i * 10;snake.coor[i].y = 0;snake.coor[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}
}// 画蛇 
void GameDraw() {cleardevice();for (int i = 0; i < snake.num; i++){// 填充一下颜色setfillcolor(snake.coor[i].color);// 画矩形(修正后的)fillrectangle(snake.coor[i].x, snake.coor[i].y, snake.coor[i].x + snake.size, snake.coor[i].y + snake.size);}
}int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 初始化蛇的数据GameInit();// 游戏主循环while (true) {GameDraw();}return 0;
}

在这里插入图片描述

3、让蛇自己动起来

// 导入图形界面库 EasyX
#include <graphics.h>
//控制键盘的头文件
#include<conio.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;
#define MAX_SNAKE 500  // 常量struct Pos {int x;int y;DWORD color;//DWORD 是 Windows API 中定义的数据类型
};struct Snake {int num;      // 蛇身体的节数int dir;      // 蛇的方向int score;    // 分数int size;     // 蛇的宽和高int speed;    // 蛇的速度// 记录蛇的坐标数组struct Pos coor[MAX_SNAKE];
};struct Snake snake;//结构体变量enum DIR
{UP,DOWN,LEFT,RIGHT
};// 初始化一下数据
void GameInit() {//蛇的身体的颜色随机变化srand(GetTickCount());snake.num = 3;snake.dir = RIGHT;snake.score = 0;snake.size = 10;snake.speed = 10;// 初始化蛇身位置和颜色for (int i = 0; i < snake.num; i++) {snake.coor[i].x = 20 - i * 10;snake.coor[i].y = 0;snake.coor[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}
}// 画蛇
void GameDraw() {cleardevice();for (int i = 0; i < snake.num; i++){// 填充一下颜色setfillcolor(snake.coor[i].color);// 画矩形(修正后的)fillrectangle(snake.coor[i].x, snake.coor[i].y, snake.coor[i].x + snake.size, snake.coor[i].y + snake.size);}
}// 让蛇动起来
void GameMove() {// 循环部分 - 控制蛇身移动for (int i = snake.num - 1; i > 0; i--){snake.coor[i].x = snake.coor[i - 1].x;snake.coor[i].y = snake.coor[i - 1].y;}// switch部分 - 控制蛇头移动 [蛇头控制方向,蛇身跟随前一个位置]switch (snake.dir) {case UP:snake.coor[0].y -= snake.speed;break;case DOWN:snake.coor[0].y += snake.speed;break;case LEFT:snake.coor[0].x -= snake.speed;break;case RIGHT:snake.coor[0].x += snake.speed;break;}
}int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 初始化蛇的数据GameInit();// 游戏主循环while (true) {GameDraw();GameMove();Sleep(100);//游戏每0.1秒更新一次画面,相当于游戏以10帧/秒的速度运行,不添加的话是看不到蛇的}return 0;
}

在这里插入图片描述

4、用键盘控制蛇的方向

// 导入图形界面库 EasyX
#include <graphics.h>
//控制键盘的头文件
#include<conio.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;
#define MAX_SNAKE 500  // 常量struct Pos {int x;int y;DWORD color;//DWORD 是 Windows API 中定义的数据类型
};struct Snake {int num;      // 蛇身体的节数int dir;      // 蛇的方向int score;    // 分数int size;     // 蛇的宽和高int speed;    // 蛇的速度// 记录蛇的坐标数组struct Pos coor[MAX_SNAKE];
};struct Snake snake;//结构体变量enum DIR
{UP,DOWN,LEFT,RIGHT
};// 初始化一下数据
void GameInit() {//蛇的身体的颜色随机变化srand(GetTickCount());snake.num = 3;snake.dir = RIGHT;snake.score = 0;snake.size = 10;snake.speed = 10;// 初始化蛇身位置和颜色for (int i = 0; i < snake.num; i++) {snake.coor[i].x = 20 - i * 10;snake.coor[i].y = 0;snake.coor[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}
}// 画蛇
void GameDraw() {cleardevice();for (int i = 0; i < snake.num; i++){// 填充一下颜色setfillcolor(snake.coor[i].color);// 画矩形(修正后的)fillrectangle(snake.coor[i].x, snake.coor[i].y, snake.coor[i].x + snake.size, snake.coor[i].y + snake.size);}
}// 让蛇动起来
void GameMove() {// 循环部分 - 控制蛇身移动for (int i = snake.num - 1; i > 0; i--){snake.coor[i].x = snake.coor[i - 1].x;snake.coor[i].y = snake.coor[i - 1].y;}// switch部分 - 控制蛇头移动 [蛇头控制方向,蛇身跟随前一个位置]switch (snake.dir) {case UP:snake.coor[0].y -= snake.speed;break;case DOWN:snake.coor[0].y += snake.speed;break;case LEFT:snake.coor[0].x -= snake.speed;break;case RIGHT:snake.coor[0].x += snake.speed;break;}
}//控制蛇的方向
void GameController() {// 获取键盘char key = _getch();// 控制蛇不能往回走switch (key) {case 72: if (snake.dir != DOWN) snake.dir = UP; break;case 80: if (snake.dir != UP) snake.dir = DOWN; break;case 75: if (snake.dir != RIGHT) snake.dir = LEFT; break;case 77: if (snake.dir != LEFT) snake.dir = RIGHT; break;}//cout << (int)key << endl;
}
int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 初始化蛇的数据GameInit();// 游戏主循环while (true) {GameDraw();GameMove();Sleep(100);//游戏每0.1秒更新一次画面,相当于游戏以10帧/秒的速度运行,不添加的话是看不到蛇的// 如果按了键盘就会执行if (_kbhit()) {GameController();}}return 0;
}

三、食物

1、初始化数据

struct Food {int x;int y;DWORD color;bool flag; // 是否被吃掉
} food;
// 初始化食物 随机分布
food.x = rand() % (WIDTH / 10) * 10;
food.y = rand() % (HEIGHT / 10) * 10;
food.color = RGB(rand() % 256, rand() % 256, rand() % 256);
food.flag = true;

2、画食物

在GameDraw函数添加以下代码:

// 绘制食物
if (food.flag)
{setfillcolor(food.color);solidellipse(food.x, food.y, food.x + 10, food.y + 10);
}

完整代码:

// 导入图形界面库 EasyX
#include <graphics.h>
//控制键盘的头文件
#include<conio.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;
#define MAX_SNAKE 500  // 常量struct Pos {int x;int y;DWORD color;//DWORD 是 Windows API 中定义的数据类型
};struct Snake {int num;      // 蛇身体的节数int dir;      // 蛇的方向int score;    // 分数int size;     // 蛇的宽和高int speed;    // 蛇的速度// 记录蛇的坐标数组struct Pos coor[MAX_SNAKE];
};struct Snake snake;//结构体变量enum DIR
{UP,DOWN,LEFT,RIGHT
};struct Food {int x;int y;DWORD color;bool flag; // 是否被吃掉
} food;// 初始化一下数据
void GameInit() {//蛇的身体的颜色随机变化srand(GetTickCount());snake.num = 3;snake.dir = RIGHT;snake.score = 0;snake.size = 10;snake.speed = 10;// 初始化蛇身位置和颜色for (int i = 0; i < snake.num; i++) {snake.coor[i].x = 20 - i * 10;snake.coor[i].y = 0;snake.coor[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}// 初始化食物 随机分布food.x = rand() % (WIDTH / 10) * 10;food.y = rand() % (HEIGHT / 10) * 10;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.flag = true;
}// 画蛇 画食物
void GameDraw() {cleardevice();for (int i = 0; i < snake.num; i++){// 填充一下颜色setfillcolor(snake.coor[i].color);// 画矩形(修正后的)fillrectangle(snake.coor[i].x, snake.coor[i].y, snake.coor[i].x + snake.size, snake.coor[i].y + snake.size);}// 绘制食物if (food.flag){setfillcolor(food.color);solidellipse(food.x, food.y, food.x + 10, food.y + 10);}
}// 让蛇动起来
void GameMove() {// 循环部分 - 控制蛇身移动for (int i = snake.num - 1; i > 0; i--){snake.coor[i].x = snake.coor[i - 1].x;snake.coor[i].y = snake.coor[i - 1].y;}// switch部分 - 控制蛇头移动 [蛇头控制方向,蛇身跟随前一个位置]switch (snake.dir) {case UP:snake.coor[0].y -= snake.speed;break;case DOWN:snake.coor[0].y += snake.speed;break;case LEFT:snake.coor[0].x -= snake.speed;break;case RIGHT:snake.coor[0].x += snake.speed;break;}
}//控制蛇的方向
void GameController() {// 获取键盘char key = _getch();// 控制蛇不能往回走switch (key) {case 72: if (snake.dir != DOWN) snake.dir = UP; break;case 80: if (snake.dir != UP) snake.dir = DOWN; break;case 75: if (snake.dir != RIGHT) snake.dir = LEFT; break;case 77: if (snake.dir != LEFT) snake.dir = RIGHT; break;}//cout << (int)key << endl;
}
int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 初始化蛇的数据GameInit();// 游戏主循环while (true) {GameDraw();GameMove();Sleep(100);//游戏每0.1秒更新一次画面,相当于游戏以10帧/秒的速度运行,不添加的话是看不到蛇的// 如果按了键盘就会执行if (_kbhit()) {GameController();}}return 0;
}

在这里插入图片描述

3、碰撞检测(是否吃到食物)

void EatFood() {// 碰撞检测if (food.flag && snake.coor[0].x == food.x && snake.coor[0].y == food.y){// 吃到了food.flag = false;snake.num++;snake.score += 10;snake.coor[snake.num - 1].color = RGB(rand() % 256, rand() % 256, rand() % 256);// 吃完了 在重新创建一个新的食物food.x = rand() % (WIDTH / 10) * 10;food.y = rand() % (HEIGHT / 10) * 10;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.flag = true;}
}
    // 游戏主循环while (true) {GameDraw();GameMove();Sleep(100);//游戏每0.1秒更新一次画面,相当于游戏以10帧/秒的速度运行,不添加的话是看不到蛇的// 如果按了键盘就会执行if (_kbhit()) {GameController();}EatFood();     }

这里可以发现,食物被吃完后, 需要随机生成,可以把生成食物的代码封装为一个函数。

// 创建新食物的函数
void createFood() {food.x = rand() % (WIDTH / 10) * 10;food.y = rand() % (HEIGHT / 10) * 10;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.flag = true;
}

完整代码:

// 导入图形界面库 EasyX
#include <graphics.h>
//控制键盘的头文件
#include<conio.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;
#define MAX_SNAKE 500  // 常量struct Pos {int x;int y;DWORD color;//DWORD 是 Windows API 中定义的数据类型
};struct Snake {int num;      // 蛇身体的节数int dir;      // 蛇的方向int score;    // 分数int size;     // 蛇的宽和高int speed;    // 蛇的速度// 记录蛇的坐标数组struct Pos coor[MAX_SNAKE];
};struct Snake snake;//结构体变量enum DIR
{UP,DOWN,LEFT,RIGHT
};struct Food {int x;int y;DWORD color;bool flag; // 是否被吃掉
} food;// 创建新食物的函数
void createFood() {food.x = rand() % (WIDTH / 10) * 10;food.y = rand() % (HEIGHT / 10) * 10;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.flag = true;
}// 初始化一下数据
void GameInit() {//蛇的身体的颜色随机变化srand(GetTickCount());snake.num = 3;snake.dir = RIGHT;snake.score = 0;snake.size = 10;snake.speed = 10;// 初始化蛇身位置和颜色for (int i = 0; i < snake.num; i++) {snake.coor[i].x = 20 - i * 10;snake.coor[i].y = 0;snake.coor[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}// 初始化食物 随机分布createFood();
}// 画蛇 画食物 画分数
void GameDraw() {cleardevice();for (int i = 0; i < snake.num; i++){// 填充一下颜色setfillcolor(snake.coor[i].color);// 画矩形(修正后的)fillrectangle(snake.coor[i].x, snake.coor[i].y, snake.coor[i].x + snake.size, snake.coor[i].y + snake.size);}// 绘制食物if (food.flag){setfillcolor(food.color);solidellipse(food.x, food.y, food.x + 10, food.y + 10);}
}// 让蛇动起来
void GameMove() {// 循环部分 - 控制蛇身移动for (int i = snake.num - 1; i > 0; i--){snake.coor[i].x = snake.coor[i - 1].x;snake.coor[i].y = snake.coor[i - 1].y;}// switch部分 - 控制蛇头移动 [蛇头控制方向,蛇身跟随前一个位置]switch (snake.dir) {case UP:snake.coor[0].y -= snake.speed;break;case DOWN:snake.coor[0].y += snake.speed;break;case LEFT:snake.coor[0].x -= snake.speed;break;case RIGHT:snake.coor[0].x += snake.speed;break;}
}//控制蛇的方向
void GameController() {// 获取键盘char key = _getch();// 控制蛇不能往回走switch (key) {case 72: if (snake.dir != DOWN) snake.dir = UP; break;case 80: if (snake.dir != UP) snake.dir = DOWN; break;case 75: if (snake.dir != RIGHT) snake.dir = LEFT; break;case 77: if (snake.dir != LEFT) snake.dir = RIGHT; break;}//cout << (int)key << endl;
}void EatFood() {// 碰撞检测if (food.flag && snake.coor[0].x == food.x && snake.coor[0].y == food.y){// 吃到了food.flag = false;snake.num++;snake.score += 10;snake.coor[snake.num - 1].color = RGB(rand() % 256, rand() % 256, rand() % 256);// 吃完了 在重新创建一个新的食物createFood();}
}int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 初始化蛇的数据GameInit();// 游戏主循环while (true) {GameDraw();GameMove();Sleep(100);//游戏每0.1秒更新一次画面,相当于游戏以10帧/秒的速度运行,不添加的话是看不到蛇的// 如果按了键盘就会执行if (_kbhit()) {GameController();}EatFood();     }return 0;
}

四、添加分数

 // 绘制分数char temp[20] = "";sprintf(temp, "分数: %d", snake.score);outtextxy(10, 10, temp);

这个函数outtextxy添加后,需要设置一下才能使用,操作如下:

在这里插入图片描述
在这里插入图片描述

五、项目完整代码

// 导入图形界面库 EasyX
#include <graphics.h>
//控制键盘的头文件
#include<conio.h>
#include<iostream>
using namespace std;// 定义游戏区域大小
const int WIDTH = 640;
const int HEIGHT = 480;
#define MAX_SNAKE 500  // 常量struct Pos {int x;int y;DWORD color;//DWORD 是 Windows API 中定义的数据类型
};struct Snake {int num;      // 蛇身体的节数int dir;      // 蛇的方向int score;    // 分数int size;     // 蛇的宽和高int speed;    // 蛇的速度// 记录蛇的坐标数组struct Pos coor[MAX_SNAKE];
};struct Snake snake;//结构体变量enum DIR
{UP,DOWN,LEFT,RIGHT
};struct Food {int x;int y;DWORD color;bool flag; // 是否被吃掉
} food;// 创建新食物的函数
void createFood() {food.x = rand() % (WIDTH / 10) * 10;food.y = rand() % (HEIGHT / 10) * 10;food.color = RGB(rand() % 256, rand() % 256, rand() % 256);food.flag = true;
}// 初始化一下数据
void GameInit() {//蛇的身体的颜色随机变化srand(GetTickCount());snake.num = 3;snake.dir = RIGHT;snake.score = 0;snake.size = 10;snake.speed = 10;// 初始化蛇身位置和颜色for (int i = 0; i < snake.num; i++) {snake.coor[i].x = 20 - i * 10;snake.coor[i].y = 0;snake.coor[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);}// 初始化食物 随机分布createFood();
}// 画蛇 画食物 画分数
void GameDraw() {cleardevice();for (int i = 0; i < snake.num; i++){// 填充一下颜色setfillcolor(snake.coor[i].color);// 画矩形(修正后的)fillrectangle(snake.coor[i].x, snake.coor[i].y, snake.coor[i].x + snake.size, snake.coor[i].y + snake.size);}// 绘制食物if (food.flag){setfillcolor(food.color);solidellipse(food.x, food.y, food.x + 10, food.y + 10);}// 绘制分数char temp[20] = "";sprintf(temp, "分数: %d", snake.score);outtextxy(10, 10, temp);
}// 让蛇动起来
void GameMove() {// 循环部分 - 控制蛇身移动for (int i = snake.num - 1; i > 0; i--){snake.coor[i].x = snake.coor[i - 1].x;snake.coor[i].y = snake.coor[i - 1].y;}// switch部分 - 控制蛇头移动 [蛇头控制方向,蛇身跟随前一个位置]switch (snake.dir) {case UP:snake.coor[0].y -= snake.speed;break;case DOWN:snake.coor[0].y += snake.speed;break;case LEFT:snake.coor[0].x -= snake.speed;break;case RIGHT:snake.coor[0].x += snake.speed;break;}
}//控制蛇的方向
void GameController() {// 获取键盘char key = _getch();// 控制蛇不能往回走switch (key) {case 72: if (snake.dir != DOWN) snake.dir = UP; break;case 80: if (snake.dir != UP) snake.dir = DOWN; break;case 75: if (snake.dir != RIGHT) snake.dir = LEFT; break;case 77: if (snake.dir != LEFT) snake.dir = RIGHT; break;}//cout << (int)key << endl;
}void EatFood() {// 碰撞检测if (food.flag && snake.coor[0].x == food.x && snake.coor[0].y == food.y){// 吃到了food.flag = false;snake.num++;snake.score += 10;snake.coor[snake.num - 1].color = RGB(rand() % 256, rand() % 256, rand() % 256);// 吃完了 在重新创建一个新的食物createFood();}
}int main() {// 初始化图形窗口initgraph(WIDTH, HEIGHT);// 设置背景色为浅蓝灰色setbkcolor(RGB(207, 214, 229));//清屏再重新绘制所有内容cleardevice();// 初始化蛇的数据GameInit();// 游戏主循环while (true) {GameDraw();GameMove();Sleep(100);//游戏每0.1秒更新一次画面,相当于游戏以10帧/秒的速度运行,不添加的话是看不到蛇的// 如果按了键盘就会执行if (_kbhit()) {GameController();}EatFood();     }return 0;
}

六、改进建议

  1. 添加碰撞检测 - 检测撞墙和自身碰撞
  2. 改进输入处理 - 使用Windows API处理方向键
  3. 添加游戏状态 - 游戏开始、暂停、结束状态优化
  4. 食物生成 - 避免食物生成在蛇身上添
  5. 加音效 - 吃食物和游戏结束的音效
http://www.dtcms.com/a/350325.html

相关文章:

  • 2.4 Flink运行时架构:Task、SubTask、ExecutionGraph的关系
  • OPcache 高级技术文档:原理、监控与优化实践
  • Unity使用Sprite切割大图
  • JavaScript 性能优化实战:从理论到落地的技术文章大纲
  • 基于长短期记忆网络的多变量时间序列预测 LSTM
  • Redis 哨兵 Sentinel
  • 【沉浸式解决问题】NVIDIA 显示设置不可用。 您当前未使用连接到NVIDIA GPU 的显示器。
  • 实时监测蒸汽疏水阀的工作状态的物联网实时监控平台技术解析
  • VLLM的加速原理
  • 基于MATLAB实现支持向量机(SVM)进行预测备
  • 大模型的多机多卡训练
  • 神经网络|(十五)概率论基础知识-协方差标准化和皮尔逊相关系数
  • 亚马逊AWD美西新仓上线:旺季备货的效率革命与策略升级
  • 真实应急响应案例记录
  • 机器学习笔记
  • Neumann Networks for Linear Inverse Problems in Imaging论文阅读
  • CF2133D 鸡骑士
  • 基于遗传算法优化BP神经网络的时间序列预测 GA-BP
  • PNP机器人介绍:全球知名具身智能/AI机器人实验室介绍之多伦多大学机器人研究所
  • DeepSeek 14B模型本地部署与预训练实现方案
  • jsvmp是什么,如何使用
  • 入门Ubuntu操作系统
  • 深度学习:从手写数字识别案例认识pytorch框架
  • 用 GSAP + ScrollTrigger 打造沉浸式视频滚动动画
  • 《零基础学 C 语言文件顺序读写:fputc/fgetc 到 fread/fwrite 函数详解》
  • 并行算法与向量化指令集的实战经验
  • 【Linux内核实时】实时互斥锁 - sched_rt_mutex
  • 寂静之歌 单机+联机(Songs Of Silence)免安装中文版
  • 数据存储的思考——从RocketMQ和Mysql的架构入手
  • 力扣498 对角线遍历