c++控制台贪吃蛇(类实现)


初学c++,算刚学完类吧,写个贪吃蛇来玩玩。

现是头文件

#pragma once
#ifndef SNACK_H
#define SNACK_H

#define Frame_X 5//边框起点横坐标
#define Frame_Y 5//边框起点纵坐标
#define Frame_width 50//边框长度
#define Frame_height 25//边框高度

struct point//蛇个点坐标
{
	int x[100];    //蛇的横坐标,其中x[0]表示蛇尾的横坐标,x[N-1]表示蛇头的横坐标
	int y[100];    //蛇的竖坐标,其中y[0]表示蛇尾的竖坐标,y[N-1]表示蛇头的竖坐标
};
struct Food//食物坐标
{
	int x;
	int y;
};


class snack
{
public:
	snack();
	void init_snack(point *snake);//初始化蛇
	void gotoxy(int x, int y);//光标移动
	void begin_view();//封面
	void frame();//打印边界与游戏说明
	void menu(point *snake,Food *food);//打实时印信息
	void print_snack(point *snake);//打印蛇
	void move(point *snake);//移动蛇
	void get_food(point *snake,Food *food);//随机产生食物
	void eating(point *snake,Food *food);//吃食物
	bool die(point *snake);//判断蛇是否死亡

	void start_game();//主函数
	void end_game();//结束界面

private:
	int length;//蛇长度
	int score;//得分
	int account;//已吃的食物数量
	int difficulty;//难度  
	int stage;//关卡
	int life;//生命值

};

#endif

主要的cpp

#include"stdafx.h"
#include"snack.h"
#include<Windows.h>
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<conio.h>

using std::cout;
using std::cin;
using std::endl;

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
/*************获取按键************/
#define key_number 11//虚拟键数
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) 
enum keyboard { up_, down_, left_, right_ ,w_,s_,a_,d_,y_,n_,esc_,other_};
int keyboard_list[] = {VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT,'W','S','A','D','Y','N',VK_ESCAPE};
keyboard keyboardarray[] = { up_,down_,left_,right_,w_,s_,a_,d_,y_,n_,esc_,other_ };
keyboard get_the_key()
{
	for (int i = 0; i < key_number; i++)
	{
		if (KEYDOWN(keyboard_list[i]))
			return keyboardarray[i];
	}
	return keyboardarray[key_number];
}


int a[2];//记录蛇尾坐标



snack::snack()
{
	length = 3;
	score = 0;
	account = 0;
	difficulty = 1;
	stage = 1;
	life = 3;
}

void snack::init_snack(point *snake)
{
	snake->x[0] = Frame_X + 2;     //初始化蛇的横坐标
	snake->y[0] = Frame_Y + Frame_height / 2;  //初始化蛇的竖坐标
	for (int i = 1; i < length; i++)/* 依次得到蛇身、蛇头的坐标 */
	{
		snake->x[i] = snake->x[i - 1] + 2;
		snake->y[i] = snake->y[i - 1];
	}
}

void snack::gotoxy(int x,int y)
{	
	COORD 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值