零基础用c++实现诺基亚上的贪吃蛇,我惊呼爷青回!

C++实现简单贪吃蛇游戏 由于整个项目只有一个文件,使用命令编译源文件,就可以得到一个名为snake的exe可运行程序,接着在exe同目录下打开cmd,开始游戏,w、s、a、d四个按键(不分大小写)控制蛇的移动方向,若蛇碰到墙壁或者自身,则游戏结束,并将计分存入名为rank.txt的文件中。snake rank,查看历史前五得分记录。 阅读详情

今天是六一儿童节,奖励了自己一瓶旺仔牛奶,觉得还是意犹未尽,作为六岁零170个月的小孩子,我翻出了大一写的贪吃蛇小游戏,玩起来虽然粗糙,但是惊呼“爷青回”啊,让我回到了小板砖一样诺基亚上的贪吃蛇时代。

在这里插入图片描述

六一儿童节,建议大家收藏找回童年嗷,哈哈哈,喜欢作者的希望一键三连点个关注。在文章最后附有完整代码。

本文实现的是一个基于控制台的贪吃蛇小游戏,当时还不会界面这些操作,但是就是因为这样才有童年那味!

界面展示

初始界面中有一些游戏提示信息,还有贪吃蛇和食物的初始位置,以及四周的边框。
#标识我们的贪吃小蛇,*表示食物,●表示边框。
在这里插入图片描述
游戏结束图:
在这里插入图片描述

设计思路

设计一个蛇的类,如图所示:
在这里插入图片描述

绘制边框等操作

具体实现可看下面源码

class snake;
void Init_Console();//控制台初始化
void gotoPos(SHORT x = 0, SHORT y = 0);//光标坐标控制
void Init_Map();//画边框
void KeyConctrl(snake &, int);//键盘控制函数
void is_gameover();//结束提示
void Prompt_info(int, int);//提示信息
void dis_date(int, int, double, int);//得分信息

如何表现位置

蛇身和食物的位置都是使用的COORD结构。

COORD是WindowsAPI中定义的一种结构,表示一个字符在控制台屏幕上的坐标。

typedef struct _COORD {
SHORT X; // horizontal coordinate   
SHORT Y; // vertical coordinate   } COORD;

如何表现蛇身

使用“#”表示蛇身,每吃一个食物就变长一个“#”。

如何表现食物

使用“*”表现食物,每吃掉一个食物,下一个食物就会随机出现在地图里。

如何移动

用"#"表示贪吃蛇,每次移动从蛇头开始,所以蛇不能反向移动,也就是不能倒车。每次输入方向键后,蛇头就会朝着方向移动,然后蛇身在该点也改变自身的方向。
方向分为停止、左、右、上、下。

enum direction { go_stop = 0, go_left, go_right, go_up, go_down }dir;

每一次移动,都要进行碰撞检测,检测是否发生了碰撞。

//    //移动
	bool move()
	{
		switch (this->dir)
		{
		case go_stop:
			break;
		case go_left:
			in_Pos.X -= 2;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		case go_right:
			in_Pos.X += 2;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		case go_up:
			in_Pos.Y--;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		case go_down:
			in_Pos.Y++;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		}
		return false;
	}
};

检验碰撞

检验膨胀边框比较简单,就是测试蛇头的坐标有没有超过边框的范围。

//撞蛇 撞边检测
	bool check_snk(COORD snk_Pos)
	{
		//边界检测
		if (snk_Pos.Y <= 1 || (snk_Pos.Y >= 23) || (snk_Pos.X <= 1) || snk_Pos.X >= 45)
		{
			return true;
		}
		for (int i = clear_bit; i <= print_bit; i++)
		{
			if (_Pos[i].X == snk_Pos.X && _Pos[i].Y == snk_Pos.Y) return true;
		}
		return false;
	}

速度升级

每当贪吃蛇吃掉五个食物,得到500分之后,速度就会+1,速度最高设置为5。

void up_speed()
	{
		if (this->speed < 5)(this->speed)++;

	}

源代码

#include <iomanip>
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//全局句柄
class snake;
void Init_Console();//控制台初始化
void gotoPos(SHORT x = 0, SHORT y = 0);//光标坐标控制
void Init_Map();//画边框
void KeyConctrl(snake &, int);//键盘控制函数
void is_gameover();//结束提示
void Prompt_info(int, int);//提示信息
void dis_date(int, int, double, int);//得分信息

bool gameOver = false;
bool withdraw = false;

class snake
{
private:
	bool flash;
	int speed, length, print_bit, clear_bit;
	COORD in_Pos, bit_Pos;
	COORD _Pos[255];
	enum direction { go_stop = 0, go_left, go_right, go_up, go_down }dir;
public:
	snake(SHORT x = 9, SHORT y = 5)
	{
		clear_bit = print_bit = length = speed = 0;
		in_Pos.X = x; in_Pos.Y = y; bit_Pos.X = 11; bit_Pos.Y = 8;
		flash = true;
		dir = go_stop;
		_Pos[0].X = in_Pos.X;
		_Pos[0].Y = in_Pos.Y;
	}
	~snake() {}
	void up_speed()
	{
		if (this->speed < 5)(this->speed)++;


	}
	double get_speed()
	{
		return this->speed;
	}
	int get_length()
	{
		return this->length;
	}
	//
	void dir_control(char _dir)
	{
		switch (_dir)
		{
		case 's': this->dir = go_stop;
			break;
		case 'l': if (this->dir != go_right)this->dir = go_left;
			break;
		case 'r': if (this->dir != go_left)this->dir = go_right;
			break;
		case 'u': if (this->dir != go_down)this->dir = go_up;
			break;
		case 'd': if (this->dir != go_up)this->dir = go_down;
			break;

		}
	}

	//光标位置
	void setPos(COORD pos)
	{
		SetConsoleCursorPosition(hOut, pos);
	}

	//碰撞检测
	void check_bit()
	{
		if (in_Pos.X == bit_Pos.X && in_Pos.Y == bit_Pos.Y)
		{
			length++;
			if ((length % 5 == 0))
			{
				if (this->speed < 5)this->speed++;
			}
			if (length == 254)
			{
				cout << "游戏通关!";
			}
			do
			{
				srand(time(NULL));
				bit_Pos.X = 3 + (rand() % 20) * 2;
				bit_Pos.Y = 2 + rand() % 20;
			} while (check_snk(bit_Pos));
		}
		else
		{
			cle();
			clear_bit++;
		}
	}
	//撞蛇 撞边检测
	bool check_snk(COORD snk_Pos)
	{
		//边界检测
		if (snk_Pos.Y <= 1 || (snk_Pos.Y >= 23) || (snk_Pos.X <= 1) || snk_Pos.X >= 45)
		{
			return true;
		}
		for (int i = clear_bit; i <= print_bit; i++)
		{
			if (_Pos[i].X == snk_Pos.X && _Pos[i].Y == snk_Pos.Y) return true;
		}
		return false;
	}

	//显示
	void dis()
	{
		if (!flash)
		{
			setPos(bit_Pos);
			SetConsoleTextAttribute(hOut, 0x0e);
			cout << " ";
			flash = true;
		}
		else
		{
			setPos(bit_Pos);
			SetConsoleTextAttribute(hOut, 0x0e);
			cout << "*";
			flash = false;
		}
		setPos(in_Pos);
		SetConsoleTextAttribute(hOut, 0x09);
		cout << "#";

	}
	void cle()
	{

		setPos(_Pos[clear_bit]);
		SetConsoleTextAttribute(hOut, 0x05);
		cout << " ";
	}

	void save_date()
	{

		if (print_bit == 254)
		{
			for (int i = 0; i <= length; i++)
			{
				_Pos[i].X = _Pos[clear_bit + i].X;
				_Pos[i].Y = _Pos[clear_bit + i].Y;
			}
			clear_bit = 0;
			print_bit = length;
		}
		print_bit++;
		_Pos[print_bit].X = in_Pos.X;
		_Pos[print_bit].Y = in_Pos.Y;

	}

	//    //移动
	bool move()
	{
		switch (this->dir)
		{
		case go_stop:
			break;
		case go_left:
			in_Pos.X -= 2;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		case go_right:
			in_Pos.X += 2;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		case go_up:
			in_Pos.Y--;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		case go_down:
			in_Pos.Y++;
			if (check_snk(in_Pos))
			{
				return true;
			}
			dis();
			save_date();
			check_bit();
			break;
		}
		return false;
	}
};

int main()
{
	do
	{
		Init_Console();
		Init_Map();
		Prompt_info(3, 3);
		snake s(27, 11);
		clock_t t_in, t_out;
		t_in = clock();
		s.dis();
		//
		while (!gameOver)
		{
			if (_kbhit())
			{
				KeyConctrl(s, _getch());
			}

			t_out = clock();
			dis_date(3, 5, s.get_speed(), s.get_length());
			if (t_out - t_in > ((0.25 - (s.get_speed() / 25)) * CLOCKS_PER_SEC))
			{
				t_in = t_out;
				gameOver = s.move();
				if (gameOver)
				{
					is_gameover();
				}
			}
			Sleep(10);
		}
		//
		while (gameOver)
		{
			if (_kbhit())
			{
				switch (_getch())
				{
				case 'y':
				case 'Y':
					gameOver = false;
					system("cls");
					break;
				case 'n':
				case 'N':
					gameOver = false;
					withdraw = true;
					break;
				}
			}
			Sleep(10);
		}
	} while (!withdraw);
	gotoPos(15, 13);
	return 0;
}

//控制台初始化
void Init_Console()
{
	SetConsoleTitleA("Console_贪吃蛇");
	COORD dSiz = { 80, 25 };
	SetConsoleScreenBufferSize(hOut, dSiz);//设置窗口缓冲区大小
	CONSOLE_CURSOR_INFO _guan_biao = { 1, FALSE };//设置光标大小,隐藏光标
	SetConsoleCursorInfo(hOut, &_guan_biao);
	system("color 0f");//设置画布颜色

}
//光标位置
void gotoPos(SHORT x, SHORT y)
{
	COORD pos = { x, y };
	SetConsoleCursorPosition(hOut, pos);
}
//画边框
void Init_Map()
{
	//SetConsoleTextAttribute(hOut, 0xF0); //设置前景色,背景色
	system("cls");
	//左边框
	for (int i = 0; i < 23; i++)
	{
		cout << endl << " ●";
	}
	//上边框
	gotoPos(3, 1);
	for (int i = 0; i < 21; i++)
	{
		cout << "●";
	}
	//下边框
	gotoPos(3, 23);
	for (int i = 0; i < 21; i++)
	{
		cout << "●";
	}
	//右边框
	for (SHORT i = 1; i <= 23; i++)
	{
		gotoPos(45, i);
		cout << "●";
	}
}
//键盘控制函数
void KeyConctrl(snake &_snk, int _key)
{
	switch (_key)
	{
	case ' ':
		_snk.dir_control('s');
		break;
	case 'w':
	case 'W':
	case 72: _snk.dir_control('u');
		break;
	case 'a':
	case 'A':
	case 75: _snk.dir_control('l');
		break;
	case 'd':
	case 'D':
	case 77: _snk.dir_control('r');
		break;
	case 's':
	case 'S':
	case 80: _snk.dir_control('d');
		break;
	case '+': _snk.up_speed();
		break;
	default: break;
	}
}
//结束提示
void is_gameover()
{

	gotoPos(17, 11);
	SetConsoleTextAttribute(hOut, 0xec);
	cout << "game over!";
	gotoPos(15, 12);
	cout << "Y重新开始/N退出";
	SetConsoleTextAttribute(hOut, 0x0f);

}
//提示信息
void Prompt_info(int _x, int _y)
{

	SetConsoleTextAttribute(hOut, 0xB);
	gotoPos(_x + 47, _y + 0);
	cout << "■游戏说明:";
	gotoPos(_x + 51, _y + 2);
	cout << "A.每得500分移速自动加1";
	gotoPos(_x + 51, _y + 3);
	cout << "B.可手动加速,最高移速5";
	gotoPos(_x + 47, _y + 5);
	cout << "■操作说明:";
	gotoPos(_x + 51, _y + 7);
	cout << "□向左移动:← A";
	gotoPos(_x + 51, _y + 8);
	cout << "□向右移动:→ D";
	gotoPos(_x + 51, _y + 9);
	cout << "□向下移动:↓ S";
	gotoPos(_x + 51, _y + 10);
	cout << "□向上移动:↑ W";
	gotoPos(_x + 51, _y + 11);
	cout << "□控制加速:+";
	gotoPos(_x + 51, _y + 12);
	cout << "□暂停游戏:空格";
	gotoPos(_x + 51, _y + 13);
	cout << "□开始游戏:任意方向键";
	gotoPos(_x + 47, 22);
	cout << "■By: Codebowl 就是靓仔我啦";
}
//速度积分显示
void dis_date(int _x, int _y, double Sped, int Score)
{
	SetConsoleTextAttribute(hOut, 0xB);
	gotoPos(_x + 47, _y + 13);
	cout << setw(2) << "◆ 移动速度: ";
	SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
	cout << Sped;
	gotoPos(_x + 47, _y + 14);
	SetConsoleTextAttribute(hOut, 0xB);
	cout << "◆ 当前积分: ";
	SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
	cout << setw(2) << Score * 100;
}

编程这些小游戏,会让你在不知不觉中爱上编程,特别适合初学者研究和实现。

这里是最强学妹工具人Codebowl。
一个面试C++开发,却误入大厂数据开发的靓仔。
希望大家一键三联,给个关注嗷

贪吃蛇(一)--用C++编写一个简单的贪吃蛇 #include<iostream> #include<windows.h> #include<conio.h> #include<time.h> using namespace std; #define random(a,b) (rand()%(b-a+1)+a) const int N=1e3+100;//蛇的最大长度 int X[N],Y[N];//记录蛇的每个节点的坐标 int Snake_length;//蛇的当前长度 int X1=1,Y1=1; 阅读详情

相关推荐

实现简单的贪吃蛇(C++)

一.编程环境: 下载并安装visual studio 2019。 下载并安装Easyx最新支持vc2019版本。 二.编程思路: 打开一个图形窗口。 定义一条蛇。 定义(生成)一只小鸡 定义蛇的初始化方向 do{ 获取键盘输入按键。 把蛇显示在图形窗口中。 把小鸡显示在图形窗口中。 移动蛇(其中包括:1.把原来的蛇在图形窗口中隐藏 2.移动蛇3.移动后看有没有撞墙或咬到自己...

yajiewen的博客 2511

C#还能这么玩?“诺基亚大屏独显计算器”来咯!

目录清空函数小数点按钮点击函数集中处理按钮触发事件函数操作符按钮点击事件函数等号按钮触发事件函数界面控件键入设置函数 在C#编程开发中通常会为了程序的可视化和用户操作更加便捷,通常会用到winform用户交互界面的开发。 你可能会问了,C#不是游戏开发的嘛,怎么会用交互界面设计呢?其实C#除了游戏开发,它和Java、C++等语言一样,能做的事情当然也有很多啦! 今天大灰狼就来使用C#做一个winf...

累计发表博客60余万字,优快云 博客专家、Java 领域优质创作者、华为云享专家、阿里云专家博主。专注分享 Java 优质文章,毕设实战项目开发,全网粉丝10W+ 3466

贪吃蛇C/C++(DevC++编译)

话不多说,直接贴代码,有需要自取,建议收藏 需要改自己的信息的话,在这里改 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #define framex 2 #define framey 2 #define wide 40 #define high 25 int i,j,a[2]; //更改颜色 int col

深巷 4868

C/C++实现贪吃蛇游戏

文章目录前言一、游戏效果展示二、具体项目实现1.游戏欢迎界面 welcome( )2.游戏背景 initGameScreen( )3.方块表示 int block[ ][ ][ ]总结 前言 俄罗斯方块(Tetris, 俄文:Тетрис)是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。 一、游戏效果展示 二、具体项目实现

Brenda_Bestow的博客 2万+

C++入门——实现贪吃蛇游戏

参考 《C和C++游戏趣味编程》 贪吃蛇游戏 键盘控制小蛇上、下、左、右移动,迟到食物后长度加1;蛇头碰到自身或窗口边缘,游戏失败 程序框架 #include <graphics.h> #include <conio.h> #include <stdio.h> // 全局变量定义 void startup() // 初始化函数 { } void show() // 绘

beilizhang的博客 1万+

c++实现经典游戏贪吃蛇(超详解)

c++实现经典游戏贪吃蛇(超详解) 要求: 1碰到四周和自身游戏结束; 2迟到食物蛇身增长; 3食物吃得越多游戏越快; 4通过w,a,s,d可控制蛇头的方向; 5蛇身颜色不一致。 源码(需要easy-x)

m0_53394907的博客 2万+

使用c++制作的贪吃蛇游戏

一、基本思路 制作贪吃蛇游戏,首先必须要有的材料是蛇和得分的食物;其次是游戏逻辑,1.要能使用键盘控制蛇的移动;2.食物被吃掉要能再次生成并且蛇要做出相应变化;3.蛇咬到自己的身体和墙会死亡;最后是图形界面的显示。 二、蛇和食物 蛇和食物使用结构体来储存,代码比较简单。 #include <graphics.h> #include <stdio.h> #include <time.h> #include <conio.h> #define SIZE 30 #

RanDoll_的博客 4110

利用C++写一个简单的贪吃蛇小游戏

首先,非常感谢白家名大佬参考提供的思路与方法,非常感谢!     首先写一个给光标定位的函数 void gotoxy(int x, int y) //光标定位 { COORD pos = { x,y }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } 这个函数需要用win...

qq_40694605的博客 6791

贪吃蛇的C++实现

一、实现的功能 1、介绍程序内容 2、选择控制方式(WASD或者方向键盘) 3、地图选择 4、速度选择 二、实现思路 既然刚学完C++,我们就要使用面向对象的方法来编程实现。创建唯一也是核心的类CentralWork,在其中实现所有功能。 贪吃蛇实现主要有四个步骤:食物的随机产生、蛇的移动显示、蛇移动方向的控制、蛇吃到食物与牺牲的判定。现在阐述实现思路。 1、食物的随机产生: 食物只存在一个,一个被吃后才会产生下一个随机食物。所以食物是否...

qq_56341866的博客 8487

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2159

Langfuse实战:从评估打分到问题解决的完整指南

本文详细介绍了如何利用开源LLM工程平台Langfuse对AI应用进行系统性评估与优化。从创建评估数据集、设计自动化评分函数,到深入排查常见问题并关联Trace进行精准打分,提供了完整的实战指南。最后,探讨了如何利用评估结果驱动提示词迭代与A/B测试,并给出了生产环境部署与性能优化的关键考量,帮助开发者构建可测量、可分析、可改进的LLM应用。

backprop5master的博客 651

c++实现贪吃蛇

1.绘制地图

qq_17769213的博客 2万+

中移物联ML307C模组OPENCPU开发环境搭建全攻略

本文详细介绍了中移物联ML307C模组OPENCPU开发环境搭建的全过程。从OPENCPU模式的核心优势解析,到SDK获取、Python与scons工具安装,再到解读SDK目录结构与实战编译命令,最后提供常见问题避坑指南,帮助开发者快速构建高效的物联网应用编译环境。

weixin_29168393的博客 745

C++实现贪吃蛇项目

** 贪吃蛇C++代码的实现 ** #include <iostream> #include<cstdlib> #include<stdio.h> #include<ctime> #include<windows.h> #include <conio.h> #define N 20 using namespace std; ...

BrilliantAntonio的博客 2634

图文并茂把Ubuntu22.04安装到u盘,实现即插即用

1、刚好打算把Ubuntu安装到u盘,随便记录下整个过程。 2、前提准备:u盘(我的是16g大小),Vmware虚拟机,Ubuntu镜像文件(可以去官网下载); 3、下面记录全过程: 1、打开虚拟机,并选择创建新的虚拟机: 2、选典型: ​ ...

子非鱼 1万+

史上最强量化工具库 Ta-Lib 从入门到精通,一篇文章就够了!

Ta-Lib 提供的 13 个关键指标,并配上详细的代码示例,确保你看完就能直接上手!🔥。

奔跑的蜗牛 9931

贪吃蛇详细教程-C++实现

和小白一起做贪吃蛇吧!会C++就可以上车! 小白第一次写文章,如有不足之处,欢迎大家指出! 因为本人是新手,所以尽量使用通俗易懂的话,没有太多专业术语,不太会用目录,大佬还请多多包涵! 前言:本文所有的方向用8,2,4,6表示,对应小键盘上的↑,↓,←,→,这么做可以直观地看出方向,方便程序的编写。 考虑到有读者可能不了解一些游戏必备的函数,所以我做了简要的介绍,大佬请跳过*部分。 首先,我们定义一个Snake类封装贪吃蛇游戏,并声明一些基本的变量和成员函数: class Snake { private:

m0_55464171的博客 1万+

基于DRU-HVDC的构网型海上风电场环流机理仿真复现

本文介绍了基于DRU-HVDC的构网型海上风电场环流机理仿真模型的构建方法。主要内容包括: 完整的Simulink模型结构,包含主模型文件GFM_DRU_Main.slx和配置脚本GFM_DRU_Setup.m 系统参数设置,包括基础频率(20Hz)、电压基准值(690V)、功率基准值(2MVA)等 四种仿真场景配置:电压不平衡、相位不平衡、阻抗不平衡和频率不平衡 风力发电机(WT)子系统的详细构建步骤,包含电压源、输出阻抗和测量模块 变压器和DRU整流器的参数设置 该模型可用于研究构网型风电场的环流机理。

huanghm88的专栏 262

C++贪吃蛇小游戏

本文的主要内容是经典游戏贪吃蛇。

m0_64007201的博客 3956

黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim...)

erase命令单位是擦除组,那么一个擦出组包含多个写块,不同写块有不同信息,主机擦除之前,必须进行确定好这些写块中的信息没有用了。所以通常erase用来擦除整个设备或分区。erase完成后,将erase的区域都要么是全0,要么是全1。那么到底是0还是1呢,根据不同的工艺有所不同,但是别担心,在ecsd[181]中会有说明到底是1还是0。erase命令的作用就是简单的将映射地址范围移动到未映射的地址范围。

黑猫奥利奥的博客 7797

16、Cortex-M7处理器:高性能与复杂架构解析

本文深入解析了Cortex-M7处理器的高性能架构与复杂设计,涵盖AHB总线矩阵优化、超标量六阶段双发射流水线、增强型分支预测单元及双精度浮点支持。重点介绍了其独特的内存层次结构,包括指令与数据TCM、片上缓存和AXI-M 64位总线接口,提升系统并行性与执行效率。通过实际测试对比M4与M7性能差异,并演示如何将代码与数据定位到TCM以实现零等待运行。同时阐述了缓存机制的工作原理及其对系统性能的影响,为开发者提供全面的性能优化指导。

a1b2c3d的博客 127

诺基亚经典贪吃蛇

代码描述 纯代码实现的经典贪吃蛇。相信贪吃蛇是不少人儿时的美好记忆。诺基亚的像素版贪吃蛇,曾经风靡一时。今天,我用 EasyX 实现了它。 操作方法 可通过 wasd 或上下左右键控制蛇的移动。 通过食物的成员函数 color 将吃掉食物后增加的节颜色设定为吃掉食物的颜色。 每得 500 分,增加一个食物,但食物总数不超过 10 个。 撞墙或撞到自己即为死亡。 代码简述 蛇的移动原理:保存每一节的坐标信息,移动时将除头之外每一节移动到它前面一节的坐标,并通过当前方向移动蛇头。详见代码。 使

游戏开发、游戏引擎开发、逆向破解爱好者 1111

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Python双人贪吃蛇小游戏

小编今天要给大家分享的是双人贪吃蛇,大家可以和自己的兄弟,姐妹,爸爸,妈妈等一起玩哟!我先介绍一下游戏: 运行游戏,进入初始界面,按下空格键。 玩家(1):w,a,s,d 玩家(2):↑,←,↓,→ 玩家要争夺7个实物,直到吃完为止 游戏结束。 下面是小编写的代码: import math import random import pygame from pygame.locals import * running = False playing = False screen = None

m0_60636930的博客 763

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

如何用C++实现控制台贪吃蛇程序

头文件及全局变量声明:#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;ctime&gt; #include &lt;conio.h&gt; #include &lt;String&gt; using namespace std; int death = 0; int scores = 0;首先枚举方向:(上下左右...

Q1751703305的博客 1297

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++ 开发贪吃蛇游戏总结

一、思考贪吃蛇的思路: 1.在一个窗口绘制贪吃蛇,肯定少不了绘制的API,所以必不可少需要引入graphics.h这个图形界面库(里面封装了WIN 32大部分绘制API,如果没有的话,可以用GDI)。 2.贪吃蛇吃掉食物就会增长一点,可以把它看成是一节一节的。 3.蛇要移动,肯定会有坐标的变化。 4.既然蛇会移动,那么蛇吃掉食物的时候食物当然也是随机变化的,所以食物也有坐标。 5.蛇的碰...

z1455841095的博客 7985

用C++手搓一个贪吃蛇?

都2024年了还用C++搞游戏?Unity不香吗?”——如果你这么想,咱们得聊聊。用C++搓游戏就像手动挡飙车:虐,但爽!它能让你真正理解内存管理、帧率控制、算法优化这些底层逻辑。今天咱们不用任何游戏引擎,就用最朴素的cout和while循环,在控制台里搞个能玩的贪吃蛇!(温馨提示:本文代码在VS2022和GCC 13下开发测试)#include <conio.h> // Windows专用,Linux/macOS用ncurses#include <windows.h> // Sleep函数。

MIT计算认知研究院特聘研究员,DeepMind超对称量子拓扑项目组首席架构师。 792
上一篇: 30分钟做完一个满分学生成绩管理系统,工具人含泪分享!
下一篇: C\C++面试重点大集合(一)
CodeBowl
博客等级 码龄5年 7664粉丝 67原创
评论 50
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值