解决展示的设计思路及代码(新人从0到1多文件调试到运行正常大概需要1~2个小时,如果再带深究一些内容点,半天怎么都能完成的)
day4解决的问题:
- 代码文件分离,核心思想是一份源码只做一件事。即该放进头文件的放进头文件,该放进链接cpp的放进对应的cpp文件。当前目录如下图所示:
snake.hpp
food.hpp
snake.cpp
windows.cpp
run.cpp
- 结构配置好以后,下面就是要将代码拆解,并分别复制粘贴到对应的文件内。这里面就牵扯到很多问题了,例如哪些放头文件更好,哪些放头文件不行,头文件为什么要加ifndef和endif等等,我觉得自己调试一个project还是收获挺多的。下面给出我调试完,微调后的代码。
snake类的实现我把deque改成了list了,关于贪吃蛇特征的一些常量我也定义在这个头文件内。
#pragma once
#ifndef __SNAKE
#define __SNAKE
#include<list>
#include "food.hpp"
const int width = 15;
const int norm_size = width - 2;
const int max_size = norm_size * norm_size;
const char wall_smb = '#';
const char body_smb = '*';
const char base_smb = ' ';
const int birth = (width / 2) - 1;
extern std::vector<std::vector<char>> vvc;
enum Status {
up, down, left, right
};
class Snake {
private:
std::list<std::pair<int, int>> body;
Status stat = Status::up;
bool alive = true;
public:
Snake() :body({
std::pair<int, int>(birth, birth) }) {
}
size_t getstatus() const {
return stat; }
std::pair<int, int> gethead()const {
return body.front(); }
std::pair<int, int> gettail()const {
return body.back(); }
bool live() const {
return alive; }
size_t size() const {
return body.size(); }
void setstatus(char c);
std::pair