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语言中二分法的使用方法

不是所有,当我们用二分法得到方程的近似解时,我们可以得到小数点后的任意一位1二分法的定义对于函数$y=f(x)$,它在区间$[a,b]$和$f(a)·f(b)&lt;0$上是连续的,这种方法称

0.2万人浏览 C语言c语言用二分法

c语言编程软件哪个好用些

C语言作为一门起源比较早的编程语言,可用的编程软件其实非常多,既有代码编辑器,也有IDE集成环境,没有哪个一定好,哪个一定不好,只要能高效的完成日常开发工作都可以,下面我简单介绍几个不错的C语言编程软

0.2万人浏览 C语言编程软件c语言

c语言指针有什么用处

所有变量值保存在内存中,而每个内存都有一个地址,所谓地址就是一个整数编号,如同门牌号码用于定位(专业术语叫寻址),一个地址对应一个字节(8bit)的内存单元。如今的编译器,一个整数int类型的值占用3

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

c语言贪吃蛇最简单代码手机

#include<stdio.h>#include<time.h>#include<windows.h>#include<stdlib.h>#defin

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

c语言指针是什么意思

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

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

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

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

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

c语言怎么入门

对于刚入门的学者,学习C语言要的是多练习,多总结。例如,在今天学习变量和输入函数中,对于数据类型要打好基础,将各分类数据类型和对应使用占位符熟练运用。再如,使用输入函数scanf()时应该注意的问题。

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

c语言下载要钱吗

打开自己手机上的酷狗音乐播放器,在设置中把歌曲播放设置成边听边存。一直放到歌曲结束,就退出来。在文件夹中找到酷狗的存储文件夹(sdcard/KuGoo/dom_c/default)。找到后缀是kgtm

0.2万人浏览 c语言c