初学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