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语言贪吃蛇需要什么知识#相关文章

网站开发用什么语言

目前比较火的网站后台开发语言有java,php,等。java相对其他两个来说入门难一点,但他的跨平台性好,适合做大型项目。php比较好学,我觉得配置有点复杂,而且模板多,这既是他的一个优点也是缺点,用

0.2万人浏览 C语言开发语言网页设计语言

c语言中位运算符及其含义

逻辑运算有三种,与或非。1 逻辑与运算,符号为&&,形式为a&&b;2 逻辑或运算,符号为||,形式为a||b;3 逻辑非运算,符号为!,形式为!a。当逻辑运算写在一起

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

c语言指针什么时候加星号

相当于:s = s*(ti)这里的星号(*)不是乘号,而是说明(t i)是一个指针值, *(ti)是(t i)这个指针所指向的内存区域里所存储的值,然后把s和这个值相加,再把得到的结果赋给s

0.2万人浏览 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语言怎么输入指数函数

指数函数的反函数是x= g(y)(y∈C)叫作函数y=f(x)(x∈A)的反函数。1、相对于反函数y=f-1(x)来说,原来的函数y=f(x)称为直接函数,反函数和直接函数的图像关于直线y=x对称,这

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