10分钟教你用C++写一个贪吃蛇附带AI功能(史上最详细最入门的贪吃蛇教程)附源代码下载

【C/C++】10分钟教你用C++写一个贪吃蛇附带AI功能(附源代码详解和下载) C++编写贪吃蛇小游戏快速入门 刚学完C++。一时兴起,就花几天时间手动做了个贪吃蛇,后来觉得不过瘾,于是又加入了AI功能。希望大家Enjoy It. 效果图示 AI模式演示 imageimage 整体规划+原理 image 大体上可以分为图上所示的几个类。不过……怎么看都有点强行面向对象的味道在里面。。[哭笑][哭笑][哭笑]。不管了……代码写得可能有点凌乱,下面我会为大家一一讲解... 阅读详情

C++编写贪吃蛇小游戏快速入门

刚学完C++。一时兴起,就花几天时间手动做了个贪吃蛇,后来觉得不过瘾,于是又加入了AI功能。希望大家Enjoy It.

效果图示

AI模式演示


整体规划+原理

大体上可以分为图上所示的几个类。不过……怎么看都有点强行面向对象的味道在里面。。[哭笑][哭笑][哭笑]。不管了……代码写得可能有点凌乱,下面我会为大家一一讲解。

整个程序设计的原理就是:主函数死循环,不断刷新打印贪吃蛇和食物。这样每循环一次,就类似电影里面的一帧,最终显示的效果就是蛇会动起来。

01 初始化工作-游戏设置

游戏设置和相关初始化放在了一个类里面,并进行了静态声明。主要设置了游戏窗口的长和款。并在GameInit()函数里面设置了窗口大小,隐藏光标,初始化随机数种子等。代码如下:

//游戏设置相关模块,把函数都放到一个类里面了。函数定义为static静态成员,不生成实体也可以直接调用
class GameSetting
{
public:
    //游戏窗口的长宽
    static const int window_height = 40;
    static const int window_width = 80;
public:
    static void GameInit()
    {
        //设置游戏窗口大小
        char buffer[32];
        sprintf_s(buffer, "mode con cols=%d lines=%d",window_width, window_height);
        system(buffer);

        //隐藏光标
        HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
        CONSOLE_CURSOR_INFO CursorInfo;
        GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
        CursorInfo.bVisible = false; //隐藏控制台光标
        SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
        //初始化随机数种子
        srand((unsigned int)time(0));
    }
};

用到了几个相关的Windows API,本文不做过多介绍,大家百度即可。

02 打印信息类

该类主要是用来打印一些游戏相关信息的。该类大体如下:

下面挑几个重点的来讲:

2.1 画地图边界

这个函数主要是根据上面所给的游戏窗口长宽来打印地图边界的。其中还划分了几个区域,主要用来放不同的信息的。

//画地图边界
static void DrawMap()
{
    system("cls");
    int i, j;
    for (i = 0; i < GameSetting::window_width; i++)
        cout << "#";
    cout << endl;
    for (i = 0; i < GameSetting::window_height-2; i++)
    {
        for (j = 0; j < GameSetting::window_width; j++)
        {
            if (i == 13 && j >= GameSetting::window_width - 29)
            {
                cout << "#";
                continue;
            }

            if (j == 0 || j == GameSetting::window_width - 29 || j == GameSetting::window_width-1)
            {
                cout << "#";
            }
            else
                cout << " ";

        }
        cout << endl;
    }
    for (i = 0; i < GameSetting::window_width; i++)
        cout << "#";

}

划分区域如下图,#就是边框了:

2.2 画出分数和模式

该函数主要是在右上角画出成绩和游戏模式的,在绘制之前会进行刷新处理。先清除,再重新打印。用到了一个gotoxy()函数。这个函数主要是移动光标到(x, y)坐标处的。关于(x, y)的位置,根据实际情况调整即可。

//画分数
static void DrawScore(int score)
{
    gotoxy(GameSetting::window_width - 22+14, 6);
    cout << "  ";
    gotoxy(GameSetting::window_width - 22+14, 4);
    cout << "  ";

    gotoxy(GameSetting::window_width - 22, 6);
    cout << "当前玩家分数: " << score << endl;
    gotoxy(GameSetting::window_width - 22, 4);
    cout << "当前游戏速度: " << 10 - speed / 25 << endl;

}

03 食物类

食物类定义了食物的坐标,随机生成规则,和画出食物等一系列操作。其中食物坐标我们用了一个结构体:

typedef struct
{
    int x;
    int y;
}COORDINATE;

该结构体两个成员,分别保存坐标的(x, y)。蛇身的坐标也会用到这个结构体。
有关食物类的大体如下:

下面我们还是挑几个重点来讲。

3.1 随机生成食物

随机生成食物,原则上不允许食物出现在蛇身的位置上,如果有。我们重新生成。注意地图的范围,就是区域左边一块。实际情况根据自身的地图范围来调整食物坐标的范围,注意不要越界。用rand()函数获得随机坐标。代码如下:

void RandomXY(vector<COORDINATE> & coord)
{
    m_coordinate.x = rand() % (GameSetting::window_width - 30) + 1;
    m_coordinate.y = rand() % (GameSetting::window_height - 2) + 1;
    unsigned int i;
    //原则上不允许食物出现在蛇的位置上,如果有,重新生成
    for (i = 0; i < coord.size(); i++)
    {
        //食物出现在蛇身的位置上。重新生成
        if (coord[i].x == m_coordinate.x && coord[i].y == m_coordinate.y)
        {
            m_coordinate.x = rand() % (GameSetting::window_width - 30) + 1;
            m_coordinate.y = rand() % (GameSetting::window_height - 2) + 1;
            i = 0;
        }
    }
}

然后,在构造函数里面传入蛇身的坐标。即可生成食物。

3.2 画出食物

画出食物比较简单了,gotoxy到随机生成的坐标之后,cout就行。我们在这还设置了一个食物颜色为红色。代码如下:

void DrawFood()
{
    setColor(12, 0);
    gotoxy(m_coordinate.x, m_coordinate.y);
    cout << "@";
    setColor(7, 0);
}

04 贪吃蛇类

定义贪吃蛇的移动,打印,吃食物等等。这节课我们暂时不讨论AI功能,先把手动操作的贪吃蛇做了跑起来,下节课再做AI功能的介绍。该类大体如下:

4.1 成员变量

成员变量m_direction记录每次移动的方向。m_is_alive记录贪吃蛇是否还活着。m_coordinate则是贪吃蛇身体坐标的记录。贪吃蛇是一节一节的,整条蛇必然是由许多节组成的。因此用了一个vector来存储蛇身,每节类型是COORDINATE结构体的。

4.2 默认构造函数

默认构造函数Snake()里面主要是做了初始贪吃蛇的生成,以及移动方向的定义等。初始的蛇为3节。在中间位置,向上移动。代码如下:

        //移动方向向上
    m_direction = 1;
    m_is_alive = true;
    COORDINATE snake_head;
    //蛇头生成位置
    snake_head.x = GameSetting::window_width / 2 - 15;
    snake_head.y = GameSetting::window_height / 2;

    this->m_coordinate.push_back(snake_head);
    snake_head.y++;
    this->m_coordinate.push_back(snake_head);
    snake_head.y++;
    this->m_coordinate.push_back(snake_head); //初始蛇身长度三节

4.3 监听键盘

监听键盘用了C里面的一个库函数。_kbhit()非阻塞函数,可以不断监听键盘的情况从而不产生阻塞。有键盘按下的时候,就获取按下的键盘是哪个。然后做出相应的变化,其实是方向的调整。需要注意的是,当我们的蛇往上走的时候,按下方向的键,我们是不做处理的。其它方向一样。还有一个调整游戏速度的,speed是休眠时间,speed越小,速度越快。反之速度越慢。

    //监听键盘
void listen_key_borad()
{
    char ch;

    if (_kbhit())                   //kbhit 非阻塞函数 
    {
        ch = _getch();  //使用 getch 函数获取键盘输入 
        switch (ch)
        {
        case 'w':
        case 'W':
            if (this->m_direction == DOWN)
                break;
            this->m_direction = UP;
            break;
        case 's':
        case 'S':
            if (this->m_direction == UP)
                break;
            this->m_direction = DOWN;
            break;
        case 'a':
        case 'A':
            if (this->m_direction == RIGHT)
                break;
            this->m_direction = LEFT;
            break;
        case 'd':
        case 'D':
            if (this->m_direction == LEFT)
                break;
            this->m_direction = RIGHT;
            break;
        case '+':
            if (speed >= 25)
            {
                speed -= 25;
            }
            break;
        case '-':
            if (speed < 250)
            {
                speed += 25;
            }
            break;
        }
    }
}

4.4 移动贪吃蛇

移动贪吃蛇,我们用了一个方向变量,在监听键盘的时候获取移动的方向,然后在根据方向移动贪吃蛇的蛇头。这里的移动我们是这样处理的,首先,贪吃蛇每移动一次,需要改变的只有蛇头和蛇尾两节。我们只需要把新的蛇头插进去,最后再画出来就可以了。至于蛇尾,如果我们不删除蛇尾的话,蛇会不断变长的。因此我们的做法是:吃到食物的时候插入蛇头而不删除蛇尾,没有吃到食物的时候插入蛇头同时删除蛇尾。这样就完美搞定了。

    //移动贪吃蛇
void move_snake()
{
    //监听键盘
    listen_key_borad();
    //蛇头
    COORDINATE head = m_coordinate[0];
    //direction方向:1 上  2 下  3 左  4 右
    switch (this->m_direction)
    {
    case UP:
        head.y--;
        break;
    case DOWN:
        head.y++;
        break;
    case LEFT:
        head.x--;
        break;
    case RIGHT:
        head.x++;
        break;
    }
    //插入移动后新的蛇头。是否删除蛇尾,在后续吃到食物判断那里做
    m_coordinate.insert(m_coordinate.begin(), head);
}

4.5 是否吃到食物

判断是否吃到食物,就是看看蛇头的坐标等不等于食物的坐标。如果等于,就重新生成食物,不删除蛇尾,蛇变长一节。不等于,就删除蛇尾,蛇长不变。

bool is_eat_food(Food & f)
{
    //获取食物坐标
    COORDINATE food_coordinate = f.GetFoodCoordinate();
    //吃到食物,食物重新生成,不删除蛇尾
    if (m_coordinate[HEAD].x == food_coordinate.x && m_coordinate[HEAD].y == food_coordinate.y)
    {
        f.RandomXY(m_coordinate);
        return true;
    }
    else
    {
        //没有吃到食物,删除蛇尾
        m_coordinate.erase(m_coordinate.end() - 1);
        return false;
    }
}

4.6判断蛇是否还存活

判断蛇是否GG,主要是看是否超出边界,是否碰到自己身体其他部分。

//判断贪吃蛇死了没
bool snake_is_alive()
{
    if (m_coordinate[HEAD].x <= 0 ||
        m_coordinate[HEAD].x >= GameSetting::window_width - 29 ||
        m_coordinate[HEAD].y <= 0 ||
        m_coordinate[HEAD].y >= GameSetting::window_height - 1)
    {
        //超出边界
        m_is_alive = false;
        return m_is_alive;
    }
    //和自己碰到一起
    for (unsigned int i = 1; i < m_coordinate.size(); i++)
    {
        if (m_coordinate[i].x == m_coordinate[HEAD].x && m_coordinate[i].y == m_coordinate[HEAD].y)
        {
            m_is_alive = false;
            return m_is_alive;
        }
    }
    m_is_alive = true;

    return m_is_alive;
}

4.7 画出贪吃蛇

画出贪吃蛇比较简单,gotoxy到身体的每一节,然后cout就行。在此之前设置了颜色为浅绿色。

//画出贪吃蛇
void draw_snake()
{
    //设置颜色为浅绿色
    setColor(10, 0);
    for (unsigned int i = 0; i < this->m_coordinate.size(); i++)
    {
        gotoxy(m_coordinate[i].x, m_coordinate[i].y);
        cout << "*";
    }
    //恢复原来的颜色
    setColor(7, 0);
}

4.8 清除屏幕上的贪吃蛇

我们是死循环不断刷新打印贪吃蛇的,因此每移动一次,必然会在屏幕上留下上一次贪吃蛇的痕迹。因此我们每次在画蛇之前,不是添足,而是清理一下上次遗留的蛇身。我们知道,蛇每次移动,变的只有蛇头和蛇尾,因此该函数我们只需要清理蛇尾就行。gotoxy到蛇尾的坐标,cout<<” “;就行。

gotoxy(m_coordinate[this->m_coordinate.size()-1].x, m_coordinate[this->m_coordinate.size() - 1].y);
cout << " ";

05 主函数,组装我们的游戏

我们的游戏在主函数里面进行组装。然后开始运行。
首先我们做游戏相关的初始化和模式选择。

GameSetting setting;
PrintInfo print_info;
Snake  snake;
//初始化游戏
setting.GameInit();
//游戏模式选择
print_info.DrawChoiceInfo();

char ch = _getch();
switch (ch)
{
case '1':
    snake.set_model(true);
    speed = 50;
    break;
case '2':
    snake.set_model(false);
    break;
default:
    gotoxy(GameSetting::window_width / 2 - 10, GameSetting::window_height / 2 + 3);
    cout << "输入错误,Bye!" << endl;
    cin.get();
    cin.get();
    return 0;
}
gotoxy(GameSetting::window_width / 2 - 10, GameSetting::window_height / 2 + 3);
system("pause");

然后就是画地图边框,打印游戏相关信息和说明。生成食物了。

//画地图
print_info.DrawMap();
print_info.DrawGameInfo(snake.GetModel());
//生成食物
Food food(snake.m_coordinate);

最后就是游戏死循环,在死循环里面,我们需要不断移动蛇,画蛇,判断蛇的状态,判断食物的状态,是否吃到食物等等。具体代码:

//游戏死循环
while (true)
{
    //打印成绩
    print_info.DrawScore(snake.GetSnakeSize());
    //画出食物
    food.DrawFood();
    //清理蛇尾,每次画蛇前必做
    snake.ClearSnake();
    //判断是否吃到食物
    snake.is_eat_food(food);
    //根据用户模式选择不同的调度方式
    if (snake.GetModel() == true)
    {
        snake.move_snake();
    }
    else
    {
        snake.AI_find_path(food);
        snake.AI_move_snake();
    }
    //画蛇
    snake.draw_snake();
    //判断蛇是否还活着
    if (!snake.snake_is_alive())
    {
        print_info.GameOver(snake.GetSnakeSize());
        break;
    }
    //控制游戏速度
    Sleep(speed);
}

最终,我们的代码就可以Run起来了。具体效果放在开头了。界面算不上好看,但是整个程序向大家展示了最基本最核心的功能和代码,大家可以在这个基础上开发自己喜欢的各种美丽的界面哦。

06 AI部分和完善

代码是画了几天间间断断写出来的,水平不算很高,代码也写得乱七八糟的。不过代码会在后期不断优化,尽量做到精简优美。至于AI功能,等下一篇博文写吧。

代码获取

欲获取代码,请关注我们的微信公众号【程序猿声】,在后台回复:aisnake。即可下载。

微信公众号

推荐文章:10分钟教你用Python做个打飞机小游戏超详细教程

推荐文章:10分钟教你用python下载和拼接微信好友头像图片

推荐文章:10分钟教你用python一行代码搞点大新闻

推荐文章:10分钟教你用python打造贪吃蛇超详细教程

10分钟教你用Python打造一个AI贪吃蛇 愉快的开始 最近在修一门叫Python基础的课,然后匆忙之中做了这个AI贪吃蛇想交个大作业,结果老师的结课作业是给定了题目,我真是…… 首先说明一点哈,此AI非彼AI。今天要讲的AI贪吃蛇还是传统意义上遍历图的找路算法编写的,并不是利用机器学习进行学习控制的哈。 关于贪吃蛇 Python编写贪吃蛇的教程此前已经写过了,相关的传送门可以戳: 传送门: 10分钟教你用python打造贪吃蛇超详细教程... 阅读详情

相关推荐

C++贪吃蛇AI程序

一个用C++写的贪吃蛇AI程序,用户上传代码AI 和计算机的AI进行比赛,通过本程序可以学习到共享内存的使用和进程间数据交换

C/C++制作简易版贪吃蛇游戏

C/C++贪吃蛇简易版游戏

weixin_49109535的博客 7843

DevC++贪吃蛇小游戏

自己用DevC++编写的C++控制台贪吃蛇小游戏,带有难度选择,可以选择4个难度,还有计时、加速、暂停功能。需要的可以参考。

自己动手写贪吃蛇AI——附源码和程序

从第一次构想写贪吃蛇AI,到现在两个学期才落实下来。其实之前用手机C4droid控制台写过一次,不是很理想,这次把这个坑填了吧,非要问有什么意义的话,自娱自乐罢了。

柯西丶不是你的博客 5906

unity贪吃蛇游戏源码+AI-游戏源码.rar

unity贪吃蛇游戏源码+AI-游戏源码: 1.利用ngui插件对界面进行了仿写 在仿写界面途中发现,贪吃蛇这个游戏在界面适应屏幕分辨率,所以在开发中需要注意界面对屏幕的适应性。通过每个图片的宽高 和uiroot的比值,在start方法中对他进行了缩放。 2.利用 ngui 自带的uidragdropItem实现摇杆 界面完成之后,首先对贪吃蛇的摇杆进行了编程。 在unity中的NGUI上,给sprite创建添加一个uidragdropitem 实现了sprite的拖动。 AI的开始,移动逻辑: 整体只考虑三个前景: 1.首先先判断蛇首的简介范围是否有其他蛇死亡了留下的食物,如果有的话设置当前朝向为星星方向,便设置移动倍率为2,否则判断第三种情况; 3.随机朝某个位置移动。如果每帧AI都在更新的话,蛇的反映速度依然会更快,需要设置一下AI的更新间隔,通过调整这个间隔和蛇首的简介方位来调整AI的反映速度,目的是能够让玩家有机会撞死AI。 AI 移动的方向分析: AI在一个平面上运动,坐标就只有两个<x,y> 把他用0和1表示为: ----- 4个方向 上下左右 (0,0) (0,1) (0,-1) (-1,0) (1,0) 四个角度 象限。 (-1,1) (1,1) (-1,-1) (1,-1) 设计思路就是把AI蛇也当作是用摇杆来控制的。那么AI就方便写多了,只是 在还没开始写之前,要考虑的就是AI蛇多了之后程序会不会卡死了。在使用线程控制的过程中发现了一个问题,cup利用率太高。所以想先尝试一下在update上操作。如果不行的在想其他的办法。 设计: 把每个AI蛇都相当于人在控制他。那么想象一下虚拟摇杆,用一个数组来存这些虚拟摇杆的位移坐标 把每条AI蛇的长度也记录下来,默认长度就20 错误: NullReferenceException: Object reference not set to an instance of an object AI6control.flootAIOneBody6 (Vector3 V) (at Assets/AI6control.cs:57) AI6control.AIsix () (at Assets/AI6control.cs:40) AI6control.Update () (at Assets/AI6control.cs:13) 该错误在百度上说:没有实例化的问题 最后一个下午的代码调试 发现由于自己的粗心 导致了把<符号写成了<=符号 就因为这个问题,让贪吃蛇变成了 卡神,害我看了好几天,现在解决了,贪吃蛇也变流畅了好多. Ai蛇也需要吃食物。长大,在游戏刚启动的时候就让Ai蛇在地图中吃食物,成长,当用户进入游戏的时候AI蛇已经吃到了一定的食物。测试了AI蛇确实发现他能吃食物。死后的处理也处理了。 在AI蛇吃食物的时候 ,地图中食物太多,控件太多。没法知道他是什么时候,查了资料说是要遍历地图中的对象,测试了一下,发现对象太多,程序卡得不要不要的,只能用触发器,避免遍历食物让程序运行不流畅或者变得死机等情况。 这样的话 在游戏中运行10-20条蛇是没有问题的。 地图中有10个点,这10个点是用来AI蛇死后复活的地方。 增加了限定时间模式. 经过很多的测试,也发现了很多的bug 不过都基本改完了,现在暂时没有发现bug

Intel RealSense D435深度相机实战:从数据采集到点云生成的完整避坑指南

本文详细介绍了Intel RealSense D435深度相机的实战应用,从数据采集到点云生成的完整流程,并提供了避坑指南。内容包括环境配置、硬件调优、数据采集技巧、点云生成核心技术及典型场景解决方案,帮助开发者高效利用D435进行机器人导航、三维重建等应用。

weixin_29054195的博客 472

c++贪吃蛇代码

贪吃蛇

m0_72872297的博客 1万+

maya权重拷贝一对一,一对多

是不是有时候盔甲很多很碎头很大,用代理一个个拷贝很麻烦吧 用下面代码直接运行进行一对多或者一对一拷贝 第一个先选择参考物体,加选其他一堆有的没的有权重或没权重的物体执行一键拷贝,就可以啦 以下是源码送上,带走吧 ------------------------ #! -*- coding:utf -8 -*- #author:liubingdong #date:20...

weixin_30852367的博客 1532

python贪吃蛇教学_10分钟教你用Python打造一个AI贪吃蛇

愉快的开始最近在修一门叫Python基础的课,然后匆忙之中做了这个AI贪吃蛇想交个大作业,结果老师的结课作业是给定了题目,我真是……首先说明一点哈,此AI非彼AI。今天要讲的AI贪吃蛇还是传统意义上遍历图的找路算法编写的,并不是利用机器学习进行学习控制的哈。关于贪吃蛇Python编写贪吃蛇的教程此前已经写过了,相关的传送门可以戳:那么今天的AI贪吃蛇就是在此基础上完成的,加了AI相关的功能。具体的...

weixin_39620535的博客 390

ue4 角色奔跑/冲刺/蹲下 /蹲走 动作切换蓝图

序列:文章分为4部分: 一、准备工作+简单的蓝图连线 二、编写“行走” 混合空间 三、编写“蹲下”混合空间 四、合成2个动画,设置动画蓝图 —————————————— 一、准备工作 下载“动画初学者包”,添加到项目! 主要文件: 打开BP_playerCharacter,组价——添加组件,找到“摄像机”,“机臂” 没有找到就去其他项目复制过来 ———————————— 手写人物的移动,也可以在...

凉城古梦猫扑街的博客 4862

Framelet Transform

需要定义 Framelet 的基函数。Framelet 基函数可以是通过组合不同的小波函数生成的。# 这里可以定义 Framelet 基函数,例如一些小波基函数的线性组合# 这是一个示例函数,具体实现需要根据具体的 Framelet 设计# 示例:正弦函数。

qq_33009429的博客 1212

10分钟用C++和AI打造贪吃蛇游戏原型

对初学者特别友好的是,平台内置的AI辅助能帮忙解释复杂语法,比如当时不太理解deque的环形存储原理,直接在编辑器侧边栏提问就获得了详细图解。上特别顺畅,它的在线C++环境开箱即用,调试时还能实时看到控制台输出。最惊喜的是写完代码后点个按钮就能生成可分享的演示链接,朋友打开浏览器就能玩到我做的游戏原型。用双向队列(deque)存储蛇身坐标,移动时在头部添加新坐标,根据按键方向决定移动偏移量。用二维字符数组模拟网格地图,'#'代表墙,空格是通道,蛇身用'O'表示,食物用'*'。游戏虽小,五脏俱全。

IndigoNight21的博客 267

VS2022+Qt6保姆级配置指南:从插件安装到项目互通全流程(附常见错误解决)

本文提供了一份详细的Visual Studio 2022与Qt6集成开发环境配置指南。从插件安装、环境搭建到项目创建与互通,涵盖了全流程操作步骤,并针对常见的配置错误和调试问题提供了实用的解决方案,帮助开发者高效构建企业级桌面应用。

nginx7reverse的博客 1207

AI编程助手:5分钟用C++实现贪吃蛇游戏

效率飞跃:描述需求后立即获得基础代码框架学习加速:通过注释和修改理解编程思路降低门槛:不需要记忆所有API细节特别要夸一下InsCode(快马)平台的一键部署功能——虽然这是个控制台程序,但平台提供的在线运行环境让我不用配置本地编译器就能测试代码。对于想快速验证想法的开发者来说,这种开箱即用的体验真的很友好。如果你是C++初学者,或者想快速实现某个功能原型,强烈推荐试试这种AI辅助开发模式。当然,最好在生成代码后自己仔细阅读理解,这样才能真正提升编程能力。

CrystalwaveEagle34的博客 643

建行报专版报道建设银行金融科技发展历程

经过十多年的建设,总行前中后台部门都有了自己的业务系统,但系统“部门”特征显著,渠道、客户、产品的横向整合不足,产品系统层次化、结构化、参数化程度不高,渠道支持产品快速部署以及跨渠道服务能力不足,管理分析类系统建设相对滞后,系统较弱的可扩展能力在应对高速增长的交易量时已疲态尽显,同时安全稳定运行的压力和风险日益积聚。站在新的历史起点上,科技条线将聚焦主责主业,完善信息科技管理体系,紧紧围绕安全生产中心任务,持续推动技术能力复用共享和自主可控,为全行做好金融五篇大文章,推动业务高质量发展提供技术支撑。

银行信息系统应用架构详解 386

Ambari 安装部署教程(手把手教学)【超级详细】

本文为读者提供了一套超详细的 Apache Ambari 安装部署教程,采用手把手教学方式,适合初学者及大数据运维人员。内容涵盖前期准备、环境配置、Ambari Server 与 Agent 安装、集群初始化配置、常见问题排查等全流程操作,确保用户能够顺利搭建稳定的 Hadoop 大数据平台管理系统。

Five的博客 1万+

效率对比:Dev-C++ vs 快马AI平台开发贪吃蛇游戏

InsCode(快马)平台的AI辅助功能,特别适合需要快速验证想法的场景。实时错误检查避免低级错误自然语言描述自动生成样板代码交互式修正比传统调试更直观对于教学演示或原型开发,这种工作流能让开发者更专注于设计逻辑而非语法细节。虽然不能完全替代深度编程学习,但确实大幅提升了开发效率。最后发现这个小游戏其实可以直接部署成可访问的在线版本,这是传统本地IDE无法实现的额外价值。

AgatePanther34的博客 559

lammps案例:热导率模拟案例讲解(NEMD方法)

lammps计算热导率大体可以分为三种方法:EMD、NEMD、rNEMD。 本文介绍非平衡模拟(NEMD)热导率的计算方法。 NEMD下热导率计算公式为: k=dQ*dZ/dt k:热导率 dQ:能量通量。 dT/dZ:温度梯度。 非平衡态下计算热导率的原理是在材料的两端或者中间设置热源和冷源。 在热源输入热量,在冷源抽取等量的热量,在这个过程中计算材料内部会有热量的传递,产生温度梯度。 在lammps模拟中得到能量通量和温度梯度,代入公式即可求得热导率。 热量的输入方式有多种,如fix langevin

lammps_jiayou的博客 1万+

快马AI三分钟生成C++游戏:零基础开发贪吃蛇实战

当我卡在键盘监听实现时,尝试用快马平台的AI辅助功能直接描述需求:"需要C++代码实现非阻塞读取WASD按键,支持Windows和Linux"。系统不仅生成了跨平台代码,还自动添加了防冲突处理(比如连续快速按键的缓冲问题),比我自己写的更健壮。最惊艳的是部署体验——代码完成后点击平台上的运行按钮,立刻能看到游戏在网页模拟终端中运行的效果。例如蛇身用绿色方块■,食物用红色○,背景留白。特别是AI生成基础代码+实时预览+一键部署的闭环,让学习编程的反馈周期缩短到了分钟级,对保持初学者的热情特别有帮助。

JetRaven12的博客 785

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java编写贪吃蛇简单版_10分钟再用Python编写贪吃蛇小游戏

Python编写贪吃蛇前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前。看来大家对这类简单易上手小游戏还是很喜爱的。恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉,Python蝉联冠军宝座,C++和C语言分获亚、季军。于是我们决定趁热打铁,推出贪吃蛇小游戏的Python版本。大家一起来看看吧~效果展示由于目前还没有加入AI功能,所以我们只展示人工演示下的贪...

weixin_39699746的博客 226

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏

Python编写贪吃蛇前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前。看来大家对这类简单易上手小游戏还是很喜爱的。恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉,Python蝉联冠军宝座,C++和C语言分获亚、季军。于是我们决定趁热打铁,推出贪吃蛇小游戏的Python版本。大家一起来看看吧~效果展示由于目前还没有加入AI功能,所以我们只展示人工演示下的贪...

weixin_33488806的博客 421

我开发了贪吃蛇游戏

贪吃蛇游戏是一款经典的街机游戏,其玩法简单却充满挑战。玩家通过控制一条不断生长的蛇,吃掉随机出现的食物,同时避免撞到墙壁或自己的身体。这种简单而富有挑战性的玩法,让贪吃蛇游戏成为了无数玩家的童年回忆。贪吃蛇游戏不仅是一款游戏,更是一种文化的象征,它承载着无数玩家的青春和快乐。在数字化时代,贪吃蛇游戏依然具有独特的魅力,它提醒我们,简单而纯粹的快乐,往往是最难能可贵的。

制定持续可量化的目标,不断坚持。 1478

推荐 10 个饱受好评且功能独特的开源人工智能项目

关注「实验楼」,每天分享一个项目教程   关于人工智能的项目,相信大家都看过或者用过不少了,但它们的大多数看上去都十分“高大上”,让人感觉要掌握他们犹如习屠龙之术一样。事实上,有很多关于人工智能的项目还是十分实用的,而且用途还十分有趣,下面就简单为大家盘点 10 个功能独特的开源人工智能项目。正文共:2746 字 预计阅读时间:7 分钟关于人工智能的项目,相信大家都看过或者用过不少了,但它们的大多

实验楼 933
下一篇: 10分钟教你用python做个打飞机(超详细超入门教程)附源代码下载
DENGFAHENG
博客等级 码龄14年 36粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值