用c语言写Dos下的贪吃蛇(奇迹冬瓜)

C语言实现贪吃蛇小游戏!(超简单详细)详细思路+源码分享 我们的今天的目标就是:用C语言来实现一个贪吃蛇项目,也不用太复杂,初学者能看懂就行! 阅读详情
//贪吃蛇dos版

//1----墙体□
//2----蛇身■
//3----食物◎
//4----墙外

//--------头文件-----------
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h> //包含对 _kbhit()和_getch()声明
#include <windows.h> 
#include <process.h>

//--------宏定义-----------
#define LEFT 0x4b 
#define RIGHT 0x4d 
#define DOWN 0x50 
#define UP 0x48 

//--------全局变量---------

typedef struct
{
	int flag;
	int sort;
}Data;

typedef struct
{
	int x,y;
}nextdata;

//direction=1;上
//direction=2;下
//direction=3;左
//direction=4;右
Data wall[20][20];
nextdata next;

int direction=1;
int length=0;
//----------函数-----------
void InitData();
void DrawData(); 
void NextFoot();
int JudgeWall();
int JudgeFood();
int JudgeEatFood();
int JudgeInWall();
void JudgeDirection();
void RandFood();
void IncreatLeath();
void MoveFoot();

void main()
{
    _beginthread(JudgeDirection,0,NULL);
	//printf("O\n");
	InitData();
	NextFoot();
	while(!JudgeWall())
	{
		if(JudgeFood())
		{
			RandFood();
		}
		DrawData();
		if(JudgeEatFood())
		{
			IncreatLeath();
		}
		else if(JudgeInWall())
		{
			MoveFoot();
		}
		else
		{
			break;
		}
		NextFoot();
		JudgeDirection();
		Sleep(300);
	}		//	getchar();
}   //vc6.0下编译运行

void InitData()
{
	int i,j;
	//外墙数据
	for(i=0;i<20;i++)
	{
		for(j=0;j<20;j++)
		{
			wall[i][j].flag=4;
			wall[i][j].sort=-1;
		}
	}
	//墙体数据
	for(i=0,j=0;i<20;i++)
	{
		wall[i][j].flag=1;
	}
	
	for(i=0,j=19;i<20;i++)
	{
		wall[i][j].flag=1;
	}
	
	for(i=0,j=0;j<20;j++)
	{
		wall[i][j].flag=1;
	}
	for(i=19,j=0;j<20;j++)
	{
		wall[i][j].flag=1;
	}
	//内墙中数据
	
	for(i=10,j=10;i<=12;i++)
	{
		wall[i][j].flag=2;
		wall[i][j].sort=++length;
	}
}

void DrawData()
{
	int i,j;
	system("cls");
	for(i=0;i<20;i++)
	{
		for(j=0;j<20;j++)
		{
			if(1==wall[i][j].flag)//墙
			{
				printf("■");
			}
			else if(2==wall[i][j].flag)
			{
				printf("■");
			}
			else if(3==wall[i][j].flag)
			{
				printf("◎");
			}
			else if(4==wall[i][j].flag)
			{
				printf("  ");
			}
		}
		printf("\n");
	}
}

void NextFoot()
{
	int i,j;
	for(i=0;i<20;i++)
	{
		for(j=0;j<20;j++)
		{
			
			if(1==wall[i][j].sort)
			{
				pprintf("%d\n",direction);
				getchar();
				getchar();
	             switch(direction)
	             {
				     case 1:next.x=i-1;next.y=j;break;
					 case 2:next.x=i+1;next.y=j;break;
					 case 3:next.x=i;next.y=j-1;break;
					 case 4:next.x=i;next.y=j+1;break;
	             }
				// printf("方向:%d\n坐标(%d,%d)\n",direction,next.x,next.y);
			}
			
		}
	}

}

int JudgeWall()
{
	if(1==wall[next.x][next.y].flag)
	{
		return 1;
	}
	return 0;
}

int JudgeFood()
{
	int i,j;
	for(i=0;i<20;i++)
	{
		for(j=0;j<20;j++)
		{
			if(3==wall[i][j].flag)
			{
				return 0;
			}
		}
	}
	return 1;
}

void RandFood()
{
	int i,j;
	srand((unsigned)time(NULL));
	do
	{
		i=rand()%20;
		j=rand()%20;
		Sleep(20);
	}while(1==wall[i][j].flag||2==wall[i][j].flag);
	wall[i][j].flag=3;
}

int JudgeEatFood()
{
	if(3==wall[next.x][next.y].flag)
	{
		return 1;
	}
	return 0;
}

void IncreatLeath()
{
	int i,j;
	wall[next.x][next.y].flag=2;
	wall[next.x][next.y].sort=0;
	for(i=0;i<20;i++)
	{
		for(j=0;j<20;j++)
		{
			if(2==wall[i][j].flag)
			{
				wall[i][j].sort++;
			}
		}
	}
	length++;
}

int JudgeInWall()
{
	if(4==wall[next.x][next.y].flag)
	{
		return 1;
	}
	return 0;
}

void MoveFoot()
{
	int i,j;
	wall[next.x][next.y].flag=2;
	wall[next.x][next.y].sort=0;
	for(i=0;i<20;i++)
	{
		for(j=0;j<20;j++)
		{
			if(2==wall[i][j].flag)
			{
				wall[i][j].sort++;
			}
			if(length+1==wall[i][j].sort)
			{
				wall[i][j].flag=4;
				wall[i][j].sort=-1;
			}
		}
	}
}

void JudgeDirection()
{
	char unch;
    if(_kbhit()&&(unch =_getch()))
	{   
		switch(unch)
		{
		    case DOWN:
			if(1!=direction)
			{
				direction=2;
			}break;
			case UP:
			if(2!=direction)
			{
				direction=1;
			}break;
			case LEFT:
			if(4!=direction)
			{
				direction=3;
			}break;
			case RIGHT:
			if(3!=direction)
			{
				direction=4;
			}break;
		}
	}
}


最大的bug,方向键不灵

(一)截图

(二)代码

 

贪吃蛇在dos环境下的简易代码 自己编的贪吃蛇游戏的代码,用了c语言,没有指针,是在dos环境下的,游戏很简单,没有level,可以实现基本的操控,操控键是AZOP 分别是上下左右。 立即下载

相关推荐

dos版 贪吃蛇 附代码加注释

基于二维数组的dos 版贪吃蛇游戏 字符动画 没有使用图形界面 附代码加注释

贪吃蛇

C++实现的简单贪吃蛇游戏。 #include #include #include #include #include #include #define WIDTH 40 #define HEIGH 12 enum direction{//方向 LEFT, RIGHT, UP, DOWN }; struct Food{//食物 int x; int y; }; struct Node{/

路漫漫 始于足下 752

dos版C语言贪吃蛇修订版 附代码和注释

基于二维数组dos版的c语言贪吃蛇,修订了食物产生部分代码,没有使用图形界面,完全字符动画。QQ:244635529

用c语言写一个贪吃蛇游戏

贪吃蛇游戏是一款相当流行的游戏。如果你想用C语言来写这个游戏,那么可以考虑这样做: 首先,分析并确定游戏的整体架构。这可以通过画出流程图或者列出伪代码来完成。 然后,实现游戏中的各个功能模块。可以从绘制游戏界面开始,再实现蛇的移动、吃食、死亡等功能。 最后,进行测试和调试。这一步很重要,因为你要确保游戏中没有任何bug,而且游戏的流程也要流畅。 这是一个大致的流程。希望这些信息对你有帮助...

weixin_35753431的博客 124

VS2010写的贪吃蛇

大二的时候写的一个小程序,用链表做的贪吃蛇

从理论到实践:TRL去嵌入校准在国产矢量网络分析仪上的应用全解析

本文全面解析了TRL去嵌入校准技术在国产矢量网络分析仪上的应用实践,从核心算法到工程实现。详细介绍了TRL校准的数学原理、国产VNA的程控接口开发、校准件质量评估及测量不确定度控制策略,帮助工程师掌握高频器件测量的关键技术。

tech5的博客 1016

用C语言写一个贪吃蛇小游戏

首先需要了解游戏的基本架构和实现细节,再通过C语言代码实现。下面是大致的实现流程: 初始化游戏窗口和蛇的初始位置 创建食物并随机放置 实现蛇移动,判断是否吃到食物以及是否撞墙 判断游戏是否结束 不断循环以上步骤,实现游戏的不断进行 代码实现可以参考网上的教程和代码,也可以自己动手实现。希望以上回答对您有所帮助! ...

weixin_35755640的博客 159

MinerU与Docling:智能文档处理框架对比

本文对比分析了MinerU和Docling两大智能文档处理框架。MinerU专注于高精度PDF解析,采用多模态AI技术,在学术文献、金融报表等复杂文档处理上表现优异;Docling则定位企业级多格式文档处理平台,支持10+格式转换,更适合文档管理系统等场景。技术层面,MinerU基于VLM模型实现端到端处理,Docling采用插件化多后端架构。性能测试显示MinerU精度更高(95%+),但资源消耗较大;Docling处理速度更快(1-3秒/页),部署更灵活。

轩哥的个人研究和成长记录 1917

C语言写个贪吃蛇游戏

在windows下编译运行后,会有点bug,也不能说bug利用命令行的刷新使得此程序会出现闪屏的现象。 贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情。这个游戏我写完后放在知乎,竟然点赞的人数超级多。我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可扩展性还是非常强的。 我试了说一下这个代码 核心的三个函数 menu(); setup(); draw(...

水枂的博客 343

别再手动查日志了!用Dify+Zabbix打造你的专属运维“嘴替”(保姆级配置流程)

本文详细介绍了如何利用Dify平台与Zabbix监控系统集成,构建智能运维对话系统,实现自然语言交互的运维管理。通过保姆级配置流程,帮助运维工程师提升查询效率、降低学习成本,打造企业级智能运维解决方案。

weixin_27298377的博客 457

如何用Deep OC-SORT提升多目标跟踪精度?实战配置与性能优化指南

本文是一份针对开发者的Deep OC-SORT多目标跟踪实战指南。详细解析了如何通过部署其核心的“动态外观记忆”与“相机防抖”模块来有效应对遮挡与抖动,从而显著提升跟踪精度与连续性。内容涵盖从环境搭建、参数调优到性能压榨的全流程,并提供针对不同场景的配置建议与工程落地技巧。

f9g0h的博客 670

c语言开发dos版贪吃蛇,用c语言写Dos下的贪吃蛇(奇迹冬瓜)

//贪吃蛇dos版//1----墙体□//2----蛇身■//3----食物◎//4----墙外//--------头文件-----------#include#include#include#include //包含对 _kbhit()和_getch()声明#include #include //--------宏定义-----------#define LEFT 0x4b#define RIG...

weixin_36216477的博客 232

YOLO26改进策略【卷积层】| CVPR 2024 可变形卷积 v4(DCNv4)无界权重提表达 + 线程合并降冗余,强化模型收敛速度

DCNv4(Deformable Convolution v4)是一种专为广泛视觉应用设计的高效算子,它对DCNv3进行了关键改进,有效解决了DCNv3存在的速度慢和表达能力受限等问题。

Limiiiing的博客 695

DOS简易版C语言贪吃蛇

好久没写过C语言了,随便写个贪吃蛇玩一玩,BUG不少

xxb2008的专栏 1811

Superpowers与 OpenSpec、Spec Kit 对比

按照官方仓库定义,Superpowers 是一套构建在 composable skills 之上的完整软件开发工作流。它不是单纯的 prompt 集合,而是把一系列工程动作做成默认流程。一个需要明确的点:Superpowers 并不只偏 Claude Code,根据。

人不风流枉少年 1814

光电二极管探测器电流信号处理与指令输出系统

本文提出了一种基于Python的光电二极管电流信号处理系统设计方案。该系统能够实时采集、处理光电二极管输出的电流信号,并根据预设阈值输出控制指令。系统采用模块化架构,包含数据采集、信号处理、阈值检测、指令生成等核心模块。其中数据采集模块提供了模拟器实现和硬件接口框架,支持噪声模拟和脉冲信号生成。系统设计考虑了实时性、可靠性和可扩展性,适用于光强测量、光电检测等多种应用场景。

huanghm88的专栏 1180

dos界面实现贪吃蛇

windows可视化程序设计——贪吃蛇 #include #include #include #include #include #include #pragma comment(lib, "WINMM.LIB") #include using namespace std; /*定义蛇结构体,direction存放1、2、3、4分别表示蛇头移动的方向是上下左

WOTGL 2476

北斗导航 | 卡尔曼滤波与因子图优化对比(附图优化matlab代码)

- 历史数据利用:因子图通过滑动窗口保留历史状态,优化时联合多帧数据;卡尔曼滤波仅依赖当前和上一帧状态 。 - 迭代优化:因子图通过多次迭代逼近最优解,卡尔曼滤波仅单次更新 。 - 误差抑制:因子图的多次线性化可有效抑制非线性误差(如GNSS伪距观测的非线性) 。

尘世冰封的专栏 1308

c语言数据结构迷宫算法,c语言版数据结构(奇迹冬瓜)-栈实战(1)栈解迷宫<迷宫算法>...

//c语言版数据结构(奇迹冬瓜)-栈实战(1)栈解迷宫//题目:栈解迷宫//---------头文件---------#include#include//---------宏定义---------#define TRUE 1#define ERROR 0#define OVERFLOW -2//------替换和结构体-------typedef int Status;typedef str...

weixin_42357916的博客 265

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

(游戏编程-01)MFC版坦克大战(奇迹冬瓜)

经过二次整合 重新放出MFC框架下的坦克大战 采用小窗口 多线程 双缓冲 动画帧化 碰撞检测 接口封装 混音 事件延迟等 力求做到代码与美工的双向化

runner2012的专栏 5345

廖雪峰Python教程[完整版]

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

cmd版贪吃蛇

import java.awt.*; import java.util.LinkedList; import java.util.Scanner; /** * @author aachen0 * @date 2018/3/27 13:56 * IDE:IntelliJ IDEA */ public class SnakeGame { static final int WIDTH = ...

aachen0 6万+

C语言编写的贪食蛇程序.c

static int x[500]={0},y[500]={0}; static int N,Tx,Ty,tiex=555,tiey=375,lastfoodx=55,lastfoody=55; #include void makefood() { x[N+1]=lastfoodx+30,y[N+1]=lastfoody+20; if(x[N+1]>=600) { x[N

wt0427的专栏 1033

c语言版数据结构(奇迹冬瓜)-单链式队列

(一)      队列(FIFO)先进先出模式,包含初,毁,清,空,长,得,进,出。八种基本操作。现以两种存储方式为例,来讲解队列的用法。    (二)      单 链式存储结构  //----头文件----- #include #include //-----宏定义----- #define TURE 1 #define ERROR 0 #define OVERFLOW -2

runner2012的专栏 2037

命令行之贪吃蛇

模拟一个童年之命令行贪吃蛇

Tc的专栏 9124

【编程日常NO.00001】DOS贪吃蛇小程序的编写by arttnba3

前言 作为一名C/C++刚刚入门的小萌新,在刚刚学会敲代码后不久,便不自量力地着手开始尝试编写各种小程序 由于贪吃蛇看着好写,于是咱便“磨刀霍霍向IDE”… 事实证明萌新的代码力还是不够(趴) 在经历了一个下午与一个晚上的“奋战”后,才最终实现了一个贪吃蛇小游戏的基本功能_(XD)∠)_ 由于DOS刷新机制十分蛋疼的缘故,游戏效果也十分蛋疼,等有时间再弄上图形化窗口(无限期咕咕咕) 基本原理 ...

arttnba3的博客 860

MFC与坦克大战系列(奇迹冬瓜)---chapter3(坦克属性定义与坦克的平滑移动)

今天我们继续坦克大战系列。我将沿用chapter2的代码继续为大家讲解。由于计划的修订第三节先完成我方坦克的移动。主要的操作流程如下: (一)首先打开上一节的代码,然后在资源解决方案中头文件和主文件的地方添加程序要自己定义的坦克的类和方法。 主要操作位右键头文件->头文件->新建项->.h文件 命名为Thing 在Thing.h里面添加的代码如下 附图。 #include "stdafx.

runner2012的专栏 7389
上一篇: MFC写贪吃蛇主文件代码(奇迹冬瓜)
下一篇: c语言版数据结构(奇迹冬瓜)-链表实战(2)合并两有序线性表
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值