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 逻辑与运算,符号为&&,形式为a&&b;2 逻辑或运算,符号为||,形式为a||b;3 逻辑非运算,符号为!,形式为!a。当逻辑运算写在一起

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

c语言在电脑上怎么下载

C语言的运行环境不算太复杂,跟其他语言比起来可以说是很简单了,而C语言的编程工具也有很多的,比如DEV-C,要想下载的话,直接在官网上下载就行了。

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语言贪吃蛇最简单代码手机

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

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语言调用函数函数调用

手机敲代码的软件C语言

如果你是指开发的话,那是没有的visual studio暂时只有windows以及MAC版本,所以debug只能在这两个IDE上做但如果你是指的编码的话,那其实只要能输单词就是可以写的,只是没有智能提

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