#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #include<windows.h> int printgamemop(char gr[20][20],int len,int x[],int y[],int fcount,int fx,int fy); int movesnake(char s[],char gr[20][20],int *len,int x[],int y[],int *fcount,int *fx,int *fy,int *score); int addfruit(int *fcount,int *fx,int *fy,int *len,int x[],int y[]); int gameOver(int len,int x[],int y[],int score); int gameOver(int len,int x[],int y[],int score) { int gameOver=0; for(int i=1; i<len; i++) { if(x[0]==x[i]&&y[0]==y[i]) { gameOver=1; printf("当前分数%d\nGame Over!\n",score); break; } } return gameOver; } int addfruit(int *fcount,int *fx,int *fy,int len,int x[],int y[]) { if((*fcount)==0) { while(1) { int tfx=rand()%20; int tfy=rand()%20; int have=0;//判断fy是否生成果子 for(int i=0; i<len; i++) { if(tfx==x[i]&&tfy==y[i]) { have=1; break; } } if(have==1) continue; else { (*fcount)++; (*fx)=tfx; (*fy)=tfy; break; } } } } int printgamemop(char gr[20][20],int len,int x[],int y[],int fcount,int fx,int fy) { for(int i=0; i<20; i++) { for(int j=0; j<20; j++) { gr[i][j]='.'; //是否是蛇的一部分 int snake=0; for(int k=0; k<len ; k++) { if(i==x[k]&&j==y[k]) { if(k==0) { snake=1;//蛇头 } else snake=2;//蛇身 break; } } if(snake==1) { printf("*"); } else if(snake==2) printf("o"); else { if(fcount&&fx==i&&fy==j) printf("@"); else printf(". "); } } printf("\n"); } } //蛇的移动 int movesnake(char s[],char gr[20][20],int *len,int x[],int y[],int *fcount,int *fx,int *fy,int *score) { int cx[400];//20*20==400; int cy[400]; memcpy(cx,x,sizeof(int)*(*len));//复制函数,将x中的sizeof(int)*(*len)字节从头开始复制到cx中 memcpy(cy,y,sizeof(int)*(*len));//做备份 int move=0; if(strcmp(s,"w")==0) { x[0]=x[0]-1; move=1; } else if(strcmp(s,"s")==0) { x[0]=x[0]+1; move=1; } else if(strcmp(s,"a")==0) { y[0]=y[0]-1; move=1; } else if(strcmp(s,"d")==0) { y[0]=y[0]+1; move=1; } //头部 //身体 if(move==1) { if((*fcount)&&x[0]==(*fx)&&y[0]==(*fy)) { memcpy(x+1,cx,sizeof(int)*(*len)); memcpy(y+1,cy,sizeof(int)*(*len));//将蛇的上一个节点复制到下一个节点上 (*len)++; (*fcount)--; (*fx)=0; (*fy)=0;//初始化 (*score)++; addfruit(fcount,fx,fy,(*len),x,y);//增加下一个水果 } else { for(int i=1; i<(*len); i++) { x[i]=cx[i-1]; y[i]=cy[i-1]; } } system("cls");//是一个系统命令,作用是清除刷屏上的所有显示并将光标置于屏幕左上角 printgamemop(gr,(*len),x,y,*fcount,*fx,*fy);//棋盘初始化 } } int main() { srand(time(NULL)); char gr[20][20]; int x[400]= {0}; //代表蛇的行 int y[400]= {0}; //代表蛇的列 int len =0; x[len]=9; y[len]=9; len++;//蛇头 x[len]=9; y[len]=8; len++;//蛇的第一个蛇身 int fx=0;//水果的坐标x int fy=0;//水果的坐标y int fcount=0;//水果数量 int score=0;//得分数 //随机生成水果 addfruit(&fcount,&fx,&fy,len,x,y); printgamemop(gr,len,x,y,fcount,fx,fy); while(1) { printf("当前分数%d,请输入w向下,s向上,a向左,d向右\n",score); char s[2]; scanf("%s",s); //move movesnake(s,gr,&len,x,y,&fcount,&fx,&fy,&score); if(gameOver(len,x,y,score)==1)break; } return 0; }
相关推荐
《简单的贪吃蛇源码分析与探讨》 贪吃蛇是一款经典的休闲游戏,深受各年龄段玩家的喜爱。在Android平台上,我们可以找到许多实现贪吃蛇的游戏源码,这为我们理解和学习移动游戏开发提供了宝贵的学习资源。这里我们...
jQuery贪吃蛇网页版游戏代码,贪吃蛇网页版游戏代码基于jquery.1.11.3.min.js制作,贪吃蛇游戏是一款经典的益智游戏,有PC和手机等多平台版本,既简单又耐玩.Query网页版贪吃蛇游戏,带得分排行榜,交互的贪吃蛇游戏...
双人贪吃蛇源代码 作为一名 IT 行业大师,我将为您生成相关知识点,详细解释标题、描述、标签和部分内容中的知识点。 标题:双人贪吃蛇源代码 双人贪吃蛇源代码是指在计算机程序设计基础课程设计中,设计和实现的...
标题中的“贪吃蛇_贪吃蛇图片.ico_贪吃蛇游戏mfc_贪吃蛇_MFC_”表明这是一个关于使用Microsoft Foundation Classes (MFC)框架开发的贪吃蛇游戏项目,其中可能包含了游戏的图标资源(.ico文件)和其他相关文件。...
《基于STM32的OLED贪吃蛇游戏详解》 贪吃蛇游戏,作为一个经典的电子游戏,自上世纪80年代以来就深受玩家喜爱。而如今,我们可以通过微控制器(MCU)实现这个游戏,例如STM32系列单片机。本文将深入探讨如何使用STM...
贪吃蛇的aia 贪吃蛇游戏是一款经典的益智游戏,有PC和手机等多平台版本。既简单又耐玩。该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长。 [1] 另外还有一种名为“贪吃蛇”钻井测井技术,是运用旋转导向系统、...
《贪吃蛇游戏的UML设计与实现》 贪吃蛇是一款经典的电子游戏,它以其简单易懂的规则和无尽的游戏模式深受玩家喜爱。在软件工程领域,将这种游戏进行设计并编码时,通常会借助统一建模语言(UML)来规划和组织项目的...
《Labview贪吃蛇课程设计:打造趣味性虚拟仪器》 Labview(Laboratory Virtual Instrument Engineering Workbench)是一款由美国国家仪器公司(NI)开发的图形化编程环境,专为构建虚拟仪器而设计。在“Labview...
在这个系列中,"贪吃蛇"小游戏是一个常见的教学实例,它通过实现一个简单的游戏来帮助初学者理解和运用Java的基本概念。 贪吃蛇游戏通常涉及到图形用户界面(GUI)的创建,这是Java中的一个重要主题。GUI允许用户与...
标题中的“AD工程 贪吃蛇脚本.rar”表明这是一个与Active Directory(AD)相关的项目,同时结合了“贪吃蛇”的元素,这通常意味着它是一个编程脚本,可能是用某种编程语言编写的,用于在Windows环境中进行自动化或者...
《贪吃蛇大战》是一款基于Cocos Creator开发的多人在线竞技游戏,它的核心玩法是玩家控制一条不断增长的蛇,在地图上吞食食物,同时避免与其他玩家的蛇相撞,以此来获得分数并竞争排行榜。Cocos Creator是一个强大的...
大作业python游戏编程课程设计魔改贪吃蛇之贪吃蛇捕蛙游戏源码,完整代码注释,开发文档。 基于贪吃蛇捕蛙的游戏,贪食蛇吃了青蛙并不会变长,当贪食蛇吃了一些青蛙之后,游戏关卡会升级,升级后蛇的行动速度会变快...
【标题】"greedysnake_QT5贪吃蛇_qt贪吃蛇_贪吃蛇_" 指的是一个使用QT5框架开发的贪吃蛇游戏项目。QT5是Qt库的一个版本,它是一个跨平台的应用程序开发框架,广泛用于创建桌面、移动和嵌入式系统的图形用户界面。这...
"C语言贪吃蛇相关PPT详细介绍贪吃蛇过程及问题" 通过分析给定的文件信息,我们可以总结出以下知识点: 1. C语言编程:贪吃蛇游戏的开发过程中使用C语言编程,包括项目的建立、头文件的使用、预编译头文件的作用等...
【贪吃蛇游戏详解】 贪吃蛇是一款经典的计算机游戏,起源于1976年的"Blockade",随后在各种早期计算机和手机平台上流行。在这个个人编写的版本中,我们有机会深入了解一个简单的贪吃蛇游戏是如何实现的。下面将详细...
贪吃蛇是一款经典的电子游戏,它的源码分析和学习对于初学者来说是非常有价值的。这个"贪吃蛇源码eclipse开发"项目是用Java语言在Eclipse集成开发环境中编写的,因此我们可以从中深入理解Java编程语言和Eclipse IDE...
13--[贪吃蛇].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码13--[贪吃蛇].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码13--[贪吃蛇].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码13...
c语言 贪吃蛇!贪吃蛇 c语言贪吃蛇,c语言 贪吃蛇!贪吃蛇 c语言贪吃蛇,c语言 贪吃蛇!贪吃蛇 c语言贪吃蛇
《C#贪吃蛇》是一款基于C#编程语言开发的极具挑战性和趣味性的经典小游戏,其强大之处在于它不仅保留了传统贪吃蛇的基本玩法,还融入了丰富的关卡设计和多样化的游戏功能,给玩家带来了更为丰富的游戏体验。...
《贪吃蛇程序详解——基于MFC与C++的实现》 贪吃蛇游戏作为一款经典的游戏,其简单易懂的规则和丰富的可玩性深受玩家喜爱,同时也是初学者学习编程的良好实践项目。本篇文章将深入探讨一个由初学者用MFC(Microsoft...