C++实现贪吃蛇类

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

希望对C++初学者了解OOP有一定的帮助,本人也是菜鸟欢迎批评指教。

废话少说,上代码:

#ifndef SNAKE_H_
#define SNAKE_H_
#include <deque>
#include <iostream>
#include "windows.h"
#include <string>
using namespace std;
typedef struct
{
	int xPos;
	int yPos;
    int derect;//方向0、1、2、3依次表示左\右\上\下
}MPOINT;
//class _declspec(dllexport) snake
class snake
{
public:
	MPOINT ptHead;
	MPOINT ptTail;
public:
	deque<MPOINT> que;
	MPOINT GetHeadPt()const;
	MPOINT GetTailPt()const;
private:
	int headDerect;
	int tailDerect;
	int length;
	bool IsMoving;
	void SetTailPos();//根据蛇头位置确定蛇尾位置
public:
	snake();
	snake(MPOINT& pt,int& len);
	virtual ~snake();
	void AddLength(int& num);
	void SetMoveDerection(int& flag);
	bool StartMove();
	bool StopMove();
	bool IsSnakeMoving()const;
	MPOINT GetHeadPos()const;
	MPOINT GetTailPos()const;
	void ShowSnake()const;
	string GetPointDerection(const MPOINT& pt)const;
	//移动左边点pt,len为移动的距离,ret默认为true即移动方向与点的运动方向相同
	void MovePoint(MPOINT& pt,int len=1,bool ret=true);
	//unsigned int timerid;
private:
	HANDLE hThread;
};
#endif;

由于是在控制台应用程序上试运行,就添加了一个线程函数:

#include "stdafx.h"
#include "snake.h"
#include "stdio.h"
#include "conio.h"
bool operator==(MPOINT& pt1,MPOINT& pt2)
	{
		if((pt1.xPos==pt2.xPos)&&(pt1.yPos==pt2.yPos))
			return true;
		return false;
	}
//int count=0;
UINT timerid;
UINT Thread(PVOID   pvoid)  
{  
	snake* pSnake=(snake*)pvoid;
    MSG   msg;  
    PeekMessage(&msg,   NULL,   WM_USER,   WM_USER,   PM_NOREMOVE);   
	timerid=SetTimer(NULL,111,500,NULL); 
    BOOL   bRet;  
    int   count   =0;  
    while(   (bRet   =   GetMessage(   &msg,   NULL,   0,   0   ))   !=   0)  
    {    
        if   (bRet   ==   -1)  
        {  
            //   handle   the   error   and   possibly   exit  
        }  
        else  
            if(msg.message==WM_TIMER)  
            {  
				if(pSnake->IsSnakeMoving())
				{
					//MessageBox(NULL,_T("FFT"),_T("ffff"),MB_YESNO);
					pSnake->MovePoint(pSnake->ptHead);//->GetHeadPos());
					pSnake->MovePoint(pSnake->ptTail);//GetTailPos());
					int count=pSnake->que.size();
					if(count)
					{
						MPOINT pt=pSnake->que.at(count-1);
						if(pSnake->GetTailPos()==pt)
							pSnake->que.pop_back();
					}
				}
				cout<<endl;
				pSnake->ShowSnake();
				//else
					//KillTimer(NULL,timerid);
            }  
            else  
            {  
                TranslateMessage(&msg);    
                DispatchMessage(&msg);    
            }  
    }  
    return   0;  
}   
//////////////////////////////////////////////////////////////////////////////////////////////////
snake::snake()//默认构造函数
:hThread(NULL)
{
	ptHead.xPos=ptHead.yPos=100;
	ptHead.derect=0;
	length=4;
	IsMoving=false;
	SetTailPos();
	//DWORD   dwThreadId;   
    //hThread=CreateThread(NULL,0,Thread,0,0,&dwThreadId);
	hThread=AfxBeginThread(Thread,this,THREAD_PRIORITY_NORMAL,0,0,NULL);
}
snake::snake(MPOINT &pt, int &len)
:hThread(NULL)
,IsMoving(false)
{
	ptHead=pt;
	length=len;
	SetTailPos();
	hThread=AfxBeginThread(Thread,this,THREAD_PRIORITY_NORMAL,0,0,NULL);
	//DWORD   dwThreadId;   
   // hThread=CreateThread(NULL,0,Thread,0,0,&dwThreadId);
}
snake::~snake()
{
	if(hThread!=NULL)
	{
		//CloseHandle(hThread);
		DWORD dwCode;
		GetExitCodeThread(hThread,&dwCode);
		if(dwCode==STILL_ACTIVE)
		{
			TerminateThread(hThread,dwCode);
			CloseHandle(hThread);
			hThread=NULL;
		}
		cout<<"成功调用析构函数,结束了线程"<<endl;
	}
}
void snake::MovePoint(MPOINT& pt,int len,bool ret)
{
	int dir=pt.derect;
	switch(dir)
	{
	case 0:
		if(ret)
			pt.xPos-=len;
		else
			pt.xPos+=len;
		break;
	case 1:
		if(ret)
			pt.xPos+=len;
		else
			pt.xPos-=len;
		break;
	case 2:
		if(ret)
			pt.yPos-=len;
		else
			pt.yPos+=len;
		break;
	case 3:
		if(ret)
			pt.yPos+=len;
		else
			pt.yPos-=len;
		break;
	default:
		break;
	}
}
void snake::AddLength(int& num)
{
	this->MovePoint(ptTail,num,false);
}
void snake::SetMoveDerection(int& flag)
{
	int n;
	n=flag%4;
	ptTail.derect=n;
	que.push_front(ptHead);
}
bool snake::StartMove()
{
	if(IsMoving)
	{
		cout<<"贪吃蛇正在移动……"<<endl;
		return false;
	}
	IsMoving=true;
	//SetTimer(NULL,1,1000,NULL); 
	//timerid=SetTimer(NULL,111,3000,NULL);
/*	cout<<"线程"<<endl;
	while(IsMoving)
	{
		MovePoint(ptHead);
		MovePoint(ptTail);
		int count=que.size();
		if(count)
		{
			MPOINT pt=que.at(count-1);
			if(ptTail==pt)
				que.pop_back();
		}
	}*/
	return true;
}
bool snake::StopMove()
{
	cout<<"=======================================================================\n";
	cout<<"开始结束线程……"<<endl;
	if(!IsMoving)
	{
		cout<<"贪吃蛇已经停止移动了"<<endl;
		return false;
	}
	IsMoving=false;
	cout<<"贪吃蛇停止移动"<<endl;
	return true;
}
void snake::SetTailPos()
{
	ptTail=ptHead;
	MovePoint(ptTail,length,false);
}
MPOINT snake::GetHeadPt()const
{
	return ptHead;
}
MPOINT snake::GetTailPt()const
{
	return ptTail;
}
bool snake::IsSnakeMoving()const
{
	if(IsMoving)
		return true;
	return false;
}
MPOINT snake::GetHeadPos()const
{
	return ptHead;
}
MPOINT snake::GetTailPos()const
{
	return ptTail;
}
void snake::ShowSnake()const
{
	cout<<"蛇头当前位置为:("<<ptHead.xPos<<","<<ptHead.yPos<<")"<<this->GetPointDerection(ptHead)<<endl;
	cout<<"蛇尾当前位置为:("<<ptTail.xPos<<","<<ptTail.yPos<<")"<<this->GetPointDerection(ptTail)<<endl;
}
string snake::GetPointDerection(const MPOINT &pt) const
{
	string str;
	switch(pt.derect)
	{
	case 0:
		str="方向向左";
		break;
	case 1:
		str="方向向右";
		break;
	case 2:
		str="方向向上";
		break;
	case 3:
		str="相方向下";
		break;
	}
	return str;
}

如果需要实现贪吃蛇游戏的话,可以用MFC做个框架,然后添加这两个文件,对相应的键盘按键进行处理,输赢处理……

也是很容易的。

用C++做一个贪吃蛇小游戏(Dev-C++5.11亲测有用) 此文章为本人休闲时创作的贪吃蛇。 阅读详情

相关推荐

c++小游戏(贪吃蛇)

MessageBox(window, "游戏失败","提示",MB_OKCANCEL);//用另外一个数组来存储蛇原来的位置。//蛇的速度(用在睡眠函数里面)bool Defeat();//双缓冲,防止屏幕一闪一闪的。SetWindowText(window, "提示");

Fgggjjjj的博客 1068

用C++实现经典的贪吃蛇游戏

六一儿童节到了,无论是大朋友还是小朋友,相信大家心里都藏有一颗向往浪漫的童真的心。贪吃蛇是一款经典的单机小游戏,大家在小时候应该都接触过。今天,我将用C++来复刻这款游戏,并祝福所有大朋友小朋友六一儿童节快乐,永远童心未泯。我们需要定义游戏整个场景的大小,蛇的朝向所代表的数值,蛇的速度,蛇的每一个结点大小,食物的大小。//定义场景大小//定义食物以及蛇的大小//定义蛇的朝向//蛇的速度(用在睡眠函数里面)如果您觉得本篇文章不错的话,不如将它分享出去吧!让更多的人感受这份童真快乐。

记录了个人在学习生活中的所思所想,在反思自己的同时希望也能够帮到你 1万+

c++控制台贪吃蛇(类实现)

初学c++,算刚学完类吧,写个贪吃蛇来玩玩。

Brucelee399的博客 869

用C++写的贪吃蛇小游戏(含完整代码和文档讲解)

if((j==3&&i>=7&&i<=11)||(j==6&&i>=4&&i<=13)||(j==9&&i>=6&&i<=12)||//“帅”字地图绘制k = 4。if(((i==4||i==5)&&j==5)||(i==6&&j==4)||(i==7&&j==3) //“仙”字地图绘制k=2。4-generateSnake() 函数生成一个初始长度为 6,起始位置为 (2,2) 的贪吃蛇,这是一个表示当前蛇位置的函数,并返回指向当前蛇类(结构体)的指针。

DeMaJIKA的博客 7653

【C/C++】10分钟教你用C++写一个贪吃蛇附带AI功能(附源代码详解和下载)

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

infinitor的博客 2932

动态规划法:n*m方格前进问题

在一个n*m的方格中,m为奇数,放置有n*m个数,方格中间的下方有一人,此人可按照正前方相临的五个方向(方格)前进但不能越出方格。人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出和的最大值。 算法设计: 可以使用动态规划方法,从顶部开始,将第二排的每个数加上顶部第一排的最优解,将6排的问题缩小为5排的问题,然后重复该操作,直到底部最后一排,此时

Winifred_1997的博客 4675

C++实现贪吃蛇(含源代码)—基于easyx图形库

本文为作者暑假学完C++的基础知识后,突然间灵感炸现! 然后写下的贪吃蛇C++版本つ _ つ(o゜▽゜)o☆ 作者认为还是有很多地方可以优化的,这也只是个简单版本,后续会持续完善, 或许会写贪吃蛇大作战?(*❦ω❦)

B1ue还在专注 4620

Unity适配Nintendo Switch平台开发

查看文档、下载SDK,都需要账号登录。

凝遥的笔记本 2098

C++贪吃蛇代码的阅读笔记(一):tools及point

1.system()指令的使用 首先必须包含在头文件里:#include <cstdlib> system("titleC++"); //设置cmd窗口标题为C++ system("color 0B"); //设置颜色,0代表背景色,B代表前景色 system("date /t"); //打印当前日期 system("time /t"); ...

AnDiXL的博客 1429

024、反激变换器的短路保护设计

本文详细探讨了反激变换器短路保护的设计要点与实践经验。作者通过实际案例分析了短路时反激拓扑的电流特性,指出初级峰值电流限制是最基础的保护手段,但需配合打嗝模式使用。文章重点剖析了打嗝模式设计的三个关键陷阱:频率设定、退出条件和软启动衔接。同时强调次级侧辅助保护、变压器参数优化、环路响应协调的重要性,并比较了自恢复与锁死方案的适用场景。最后提出实测验证的四个关键点和设计经验:不盲信芯片手册、保护电路独立设计、充分留有余量、进行破坏性测试。全文以工程实践为导向,为反激电源的可靠短路保护提供了系统性解决方案。

Jack010169的博客 237

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3682

手把手教你用C++写贪吃蛇

最近女朋友挺无聊的(不是左手也不是右手),决定找个小游戏让她玩玩,想来想去就是贪吃蛇比较经典,但是老版的诺基亚挺难找的,于是决定用C++写一个贪吃蛇来哄哄女朋友,也顺便更新一下博客。 由于代码分多个文件写成,因此不太好在博客中贴出源代码,源代码已上传至GitHub(麻烦各位爸爸们看代码时顺手给个star!),下面说一下思路: 如果想写出贪吃蛇的游戏首先得知道贪吃蛇的玩法,简而言之就是一条蛇在转悠,越转越长,同时要吃东西。这么说各位看官肯定都明白了吧?我相信各位的回答一定是下面这样的: 对于贪吃蛇游戏来说,

WJ_SHI的博客 5617

基于simulink的自动紧急制动系统(AEB)的功能验证

本文手把手指导使用Simulink构建自动紧急制动系统(AEB)模型,通过五个关键步骤完成功能验证:1)搭建车辆动力学模型;2)设计雷达传感器模型;3)开发基于碰撞时间(TTC)的决策逻辑;4)设计标准化测试场景;5)进行仿真分析。重点讲解了AEB的多级触发机制(预警、辅助制动、自动制动)和核心指标验证方法,包括制动时机判断、减速度性能等。通过典型场景仿真,展示了AEB如何在2.5秒TTC触发预警,1.2秒TTC启动自动制动,有效避免碰撞。文章还展望了行人AEB、传感器融合等进阶研究方向,为自动驾驶安全系统

amy_mhd的博客 267

经典游戏---贪吃蛇从C++代码实现

小时候都玩过贪吃蛇这个经典的小游戏,在我们的普通手机里似乎都是必备的。它伴随着我们的童年,经历了好多好多时光。它带给我们了许多的乐趣。 学习了c++这门编程语言后,我就想着能不能把它做出来,在我查看了相关知识后,明白了其中的道理,就尝试着自己写出这个小游戏来,而且加入了许多可玩性的东西,包括等级选择,暂停/继续和分数制。整个程序采用了类和数组的相关知识实现。 //=====================================

Shawn Hou 18万+

国产麒麟V10系统命令大全,100个实用命令助你玩转系统!

国产麒麟V10系统命令大全,100个实用命令助你玩转系统!

网络技术联盟站 1906

C#串口通信从入门到精通(21)——一个串口多线程发送数据

本文详细介绍了串口通信中采用多线程发送串口数据的解决方案,由多年实战经验总结,绝对干货!

qq_34059233的博客 3688

C++贪吃蛇从0到1--day4

解决展示的设计思路及代码(新人从0到1多文件调试到运行正常大概需要1~2个小时,如果再带深究一些内容点,半天怎么都能完成的) day4解决的问题: 代码文件分离,核心思想是一份源码只做一件事。即该放进头文件的放进头文件,该放进链接cpp的放进对应的cpp文件。当前目录如下图所示: snake.hpp //定义snake类,声明方法 food.hpp //定义food类,实现方法(因为内容较少,所以就把实现写进来了) snake.cpp //snake的全部方法的实现 windows.cpp //打印窗口

lzzry1314的博客 2671

【AI智能体】Langchain 主流大模型调用与对话API使用详解

【AI大模型】Langchain 模型调用与对话API使用详解

congge_study的博客 404

C++编写贪吃蛇(使用类与对象)

C++编写贪吃蛇(使用类与对象) 完成了一个学期的C++学习后我决定用C++编写一个贪吃蛇。本以为是一个十分基础的问题,网上应该有很多代码教程,但找了好久都没有合适的。要么没有使用类和对象来编写,要么连编译都通不过。无奈只能从头开始自己摸索着写。本人水平有限,代码算法可能存在着一些问题,欢迎读到这篇文章有其他想法的人在评论区理性讨论,大家互相学习。 思路 贪吃蛇游戏主要有这样三个部分:地图、蛇和食物。地图是蛇运动和食物生成的地方且在地图周围存在着墙作为边界。游戏运行的过程大致如下: 1.游戏开始,生成地图并

IDEALPYJ的博客 4394

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

c++贪吃蛇游戏代码

移动蛇的时候需要先把下一个位置的坐标计算出来,利用蛇的方向进行计算,比如说蛇下一步需要向上走,那么下一个节点是当前蛇头的y坐标-1,因为向上y坐标减少。由于蛇需要不停的移动,所以使用一个while进行蛇的持续移动,打破while的条件是蛇的状态不等于OK,因为当蛇的状态不等于OK的时候,蛇就死亡了。这个函数会在后续大量使用。修改完状态就是移动蛇了,在移动蛇的时候需要先判断一下,蛇移动的位置是不是食物,因为有食物和没有食物蛇的移动方式不相同,在蛇的类里面有一个蛇的方向,主要是依靠这个进行蛇的移动。

2401_89531828的博客 2489

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

简单贪吃蛇游戏的C++实现

我大概在一个多月前把自己上学期写的c代码的贪吃蛇游戏push到csdn上,并且说c风格的贪吃蛇写起来有些麻烦(贪吃蛇游戏的c语言实现),准备用面向对象的c++再写一遍。现在我们专业恰好刚教完了c++,学校也布置了一道简单的贪吃蛇的编程题目,实现下来,的确觉得c++的思路清晰很多,所以再次把c++的代码push上来,供大家对比参考:)

longj's coding workbench 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

DENGFAHENG的博客 8691

贪吃蛇游戏

【代码】贪吃蛇游戏。

2401_86401601的博客 449

使用C++语言模拟实现贪吃蛇小游戏

需求分析: 用C++开发一个能在编译窗口中运行的贪吃蛇小游戏,实现环境为:Microsoft visual C++6.0集成开发环境 算法及程序说明: 用类构造蛇 class Snake { public: int head,tail,body[200],length; }; Snake T; void init() //初始化函数 ...

weixin_30845171的博客 168

c++经典游戏———贪吃蛇

cout << "\n\n\t\t\t4.等级四:速度 400 \n\n\t\t\t5.等级五:速度 200 \n\n\t\t\t6.等级六:速度 100 \n\n\t\t\t7.自动升级模式" << endl;cout << "\n\n\n\t\t\t1.等级一:速度 1000 \n\n\t\t\t2.等级二:速度 800 \n\n\t\t\t3.等级三:速度 600 ";//吃米后将原先蛇头变为蛇身。else if(x==0 || x==N-1 ||y==0 || y==N-1) // 碰到墙壁。

BCXWZandy的博客 1102

原来还有这么通俗易懂的贪吃蛇写法之CUnit类(思路很详细,有详细的代码解释)(一)

提示:阅读本文需要一定的C++基础,此思路只用于实现贪吃蛇的基本功能,没有图形化,没有使用EasyX库。(尊重原创,转载本文请指明出处) 文章目录前言一、了解一个点的显示与擦除二、Cunit类:1.代码2.思路总结 前言 此思路中,贪吃蛇一共会分成6个类,分别是CUnit类, CFood类,CMap类, CSnake类, CGame类, CMenu类,这些类中的成员和方法全部是public。这一篇介绍CUnit类。 提示:全部代码请点击—>https://github.com/qing-qing

weixin_43929310的博客 1209
下一篇: C++实现:分数类
疯狂-的-蜗牛
博客等级 码龄16年 427粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值