C++贪吃蛇从0到1--day4

解决展示的设计思路及代码(新人从0到1多文件调试到运行正常大概需要1~2个小时,如果再带深究一些内容点,半天怎么都能完成的)

day4解决的问题:

  1. 代码文件分离,核心思想是一份源码只做一件事。即该放进头文件的放进头文件,该放进链接cpp的放进对应的cpp文件。当前目录如下图所示:
snake.hpp	//定义snake类,声明方法
food.hpp	//定义food类,实现方法(因为内容较少,所以就把实现写进来了)
snake.cpp	//snake的全部方法的实现
windows.cpp	//打印窗口的函数及其他辅助函数,后续可能根据功能再分
run.cpp		//main函数
  1. 结构配置好以后,下面就是要将代码拆解,并分别复制粘贴到对应的文件内。这里面就牵扯到很多问题了,例如哪些放头文件更好,哪些放头文件不行,头文件为什么要加ifndef和endif等等,我觉得自己调试一个project还是收获挺多的。下面给出我调试完,微调后的代码。
    snake类的实现我把deque改成了list了,关于贪吃蛇特征的一些常量我也定义在这个头文件内。
//snake.hpp
#pragma once		//和ifndef等效,但是怕某些编译器不支持,两种都写了吧
#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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值