c语言贪吃蛇需要什么知识

2022-11-30 投稿:李育泉 分享

#include <bits/stdc .h>

#include <windows.h>

#include <conio.h>

using namespace std;

void gotoxy(int x,int y) {COORD pos={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}//光标定位

class Food {//食物类

private: int m_x; int m_y;

public:

void randfood() {//随机产生一个食物

srand((int)time(NULL));//利用时间添加随机数种子,需要ctime头文件

L1:{m_x=rand()%(85) 2;//2~86

m_y=rand()%(25) 2;//2~26

if(m_x%2) goto L1;//如果食物的x坐标不是偶数则重新确定食物的坐标

gotoxy(m_x,m_y);//在确认好的位置输出食物

cout << "★";}}

int getFoodm_x() {return m_x;}//返回食物的x坐标

int getFoodm_y() {return m_y;}};//返回食物的y坐标

class Snake {

private:

struct Snakecoor {int x; int y;};//定义一个蛇的坐标机构

vector<Snakecoor> snakecoor;//将坐标存入vector容器中

//判断并改变前进方向的函数

void degdir(Snakecoor&nexthead) {//定义新的蛇头变量

static char key='d';//静态变量防止改变移动方向后重新改回来

if(_kbhit()) {

char temp=_getch();//定义一个临时变量储存键盘输入的值

switch(temp) {//如果临时变量的值为wasd中的一个,则赋值给key

default: break;//default是缺省情况,只有任何条件都不匹配的情况下才会执行 必须写在前面!不然蛇无法转向

case'w': case'a': case's': case'd':

//如果temp的方向和key的方向不相反则赋值 因为两次移动方向不能相反 将蛇设置为初始向右走

if(key=='w' && temp!='s' || key=='s' && temp!='w' || key=='a' && temp!='d' || key=='d' && temp!='a') key=temp;}}

switch (key) {//根据key的值来确定蛇的移动方向

case'd': nexthead.x=snakecoor.front().x 2; nexthead.y=snakecoor.front().y; break;

//新的蛇头的头部等于容器内第一个数据(旧蛇头)x坐标 2 因为蛇头占两个坐标,移动一次加2

case'a': nexthead.x=snakecoor.front().x-2; nexthead.y=snakecoor.front().y; break;

case'w': nexthead.x=snakecoor.front().x; nexthead.y=snakecoor.front().y-1; break;

//因为控制台的x长度是y的一半,所以用两个x做蛇头,需要的坐标是二倍

case's': nexthead.x=snakecoor.front().x; nexthead.y=snakecoor.front().y 1;}}

//游戏结束时设计一个界面输出“游戏结束”以及分数

void finmatt(const int score) {

system("cls"); gotoxy(40, 14);//清屏然后输出

cout << "游戏结束"; gotoxy(40, 16);

cout << "得分:" << score; gotoxy(0, 26);

exit(0);}//exit为C 的退出函数 exit(0)表示程序正常退出,非0表示非正常退出

void finishgame(const int score) {//游戏结束

if(snakecoor[0].x>=88 || snakecoor[0].x<0 || snakecoor[0].y>=28 || snakecoor[0].y<0) finmatt(score);//撞墙

for(int i=1;i<snakecoor.size();i ) if(snakecoor[0].x==snakecoor[i].x && snakecoor[0].y==snakecoor[i].y) finmatt(score

#c语言贪吃蛇需要什么知识#相关文章

c语言console什么意思

可以理解为占位符。比如Console.WriteLine("hello {0}",yourname);,其实在输出的时候就是将yourname变量的值放在{0}处,输入类似于 "

0.2万人浏览 C语言c语言console

单片机c语言常用语句

要是只有一条语句可以不加,但是要写为“while(1);”分号不能少,如果是含有多条语句,那么大括号一定要加!如果是含有多条语句还不加的话,循环只能管到其后面的一条语句,无法实现预定的功能。

0.2万人浏览 C语言单片机C语言单片机c语言

c语言函数由什么组成

一个C程序由一个或多个函数组成,一个C函数由若干条C语句构成,一条C语句由若干基本单词组成。所有C函数的结构都包括三部分:函数名、形式参数和函数体。在C程序中,主函数名字是固定的,其他的函数名则可以根

0.2万人浏览 c语言c语言函数C语言

大一学c语言用什么软件

这个就非常多啦,作为一门古老且应用广泛的编程语言,C语言的编程软件其实非常多,下面我简单介绍5个Win10环境下非常不错的C语言编程软件,感兴趣的朋友可以尝试一下:Dev-C这是Windows平台下一

0.2万人浏览 C语言C用什么软件

c语言编译器电脑版有哪些

1、 visual c6.0 (win8系统下不好用,C/C)-Microsoft Visual C;2、 visual studio (2005、2008、2010、2012、2013)- Micr

0.2万人浏览 c语言C语言c

c语言函数分类

fun函数是用调用主函数的。它是指用fun来定义一个函数或是方法,这样在引用时可以用fun表示。比如fun(int x,y), fun(int x,y) 有上面的出现,必然在主函数里有调它,fun没有

0.2万人浏览 C语言c语言c语言函数

c语言指针是什么意思

指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址。指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值

0.2万人浏览 C语言c语言指针C语言指针

c语言怎么定义函数并调用

你首先需要知道这个函数需要什么参数,举个例子来说一个函数的函数原型是 inta(intx),那么你在使用它的时候它的时候就要注意 要传递给他的是一个int类型的变量,它会返还给你一个int类型的变量例

0.2万人浏览 C语言调用函数函数调用