我用代码写了一篇国庆游记
大家好,我是轩辕。
假期额度已经亮起了红灯,是时候收心准备回去继续搬砖了!
这几天各种各样的游记文章相信大家看的挺多了,我这几天又去哪里浪了呢?我用代码告诉你!顺便提前找找感觉,要好好学习技术了!
出行
这几天出行,奔波于几个城市之间,先来看下城市的定义:
代码语言:javascript复制/**
* 城市
*/
class City {
public:
City(string name) {
this->name = name;
}
string getName() {
return this->name;
}
private:
string name;
};
出行自然离不了交通工具,咱们先来抽象一个基类,或者说定义一个接口:
代码语言:javascript复制/**
* 交通
*/
class Transport {
public:
virtual void go(string from, string to) = 0;
};
这几天,动车、汽车、公交车、轮船、电动车各种都有,再来定义这些子类:
代码语言:javascript复制/**
* 火车/动车
*/
class Train : public Transport {
public:
virtual void go(string from, string to) {
cout << "坐动车,从 " << from << " 到 " << to << endl;
}
};
/**
* 出租车
*/
class Taxi : public Transport {
public:
virtual void go(string from, string to) {
cout << "坐出租车,从 " << from << " 到 " << to << endl;
}
};
/**
* 汽车
*/
class Bus : public Transport {
public:
virtual void go(string from, string to) {
cout << "坐公交车,从 " << from << " 到 " << to << endl;
}
};
/**
* 船
*/
class Boat : public Transport {
public:
virtual void go(string from, string to) {
cout << "坐船,从 " << from << " 到 " << to << endl;
}
};
/**
* 电动车
*/
class EBike : public Transport {
public:
virtual void go(string from, string to) {
cout << "骑电瓶车,从 " << from << " 到 " << to << endl;
}
};
吃喝
出来玩,当然少不了吃吃吃!同样的,对于美食,也先抽象一个基类出来:
代码语言:javascript复制/**
* 美食
*/
class Food {
public:
Food(string name) {
this->name = name;
}
virtual void eat() {
cout << "吃美食: " << this->name << endl;
}
protected:
string name;
};
这几天吃了海鲜、面食、米粉、甜品等等各种类型的美食,来定义这些子类:
代码语言:javascript复制/**
* 美食:鱼
*/
class Fish : public Food {
public:
Fish(string name):Food(name){}
virtual void eat() {
cout << "吃鱼: " << this->name << endl;
}
};
/**
* 美食:甜品
*/
class Dessert : public Food {
public:
Dessert(string name):Food(name){}
virtual void eat() {
cout << "吃甜品: " << this->name << endl;
}
};
/**
* 美食:芋头
*/
class Taro : public Food {
public:
Taro(string name):Food(name){}
virtual void eat() {
cout << "吃芋头: " << this->name << endl;
}
};
/**
* 美食:海鲜
*/
class SeaFood : public Food {
public:
SeaFood(string name):Food(name){}
virtual void eat() {
cout << "吃海鲜: " << this->name << endl;
}
};
/**
* 美食:米粉
*/
class RiceFlour : public Food {
public:
RiceFlour(string name):Food(name){}
virtual void eat() {
cout << "吃粉: " << this->name << endl;
}
};
/**
* 美食:面条
*/
class Noodle : public Food {
public:
Noodle(string name):Food(name){}
virtual void eat() {
cout << "吃面条: " << this->name << endl;
}
};
玩乐
除了吃,旅游旅游,当然得游了!所以景点少不了:
代码语言:javascript复制/**
* 景点
*/
class ScenicSpots {
public:
ScenicSpots(string name) {
this->name = name;
}
void visit() {
cout << "游玩: " << this->name << endl;
}
private:
string name;
};
哦,对了,抽空还看了一部电影:
代码语言:javascript复制class Movie {
public:
Movie(string name) {
this->name = name;
}
void watch() {
cout << "看电影: " << this->name << endl;
}
private:
string name;
};
每一天差不多就是上面这些内容了:交通、吃喝、游玩,来定义一个每一天假日的类,把这些操作封装一下:
代码语言:javascript复制/**
* 假日
*/
class Holiday {
public:
Holiday(string day, City city) {
this->day = day;
cout << "---------------假日: " << day << " " << city.getName() << " --------------" << endl;
}
void transport(Transport* t, string from, string to) {
t->go(from, to);
}
void eat(Food* f) {
f->eat();
}
void visit(ScenicSpots* s) {
s->visit();
}
void watch(Movie* m) {
m->watch();
}
private:
string day;
};
度假
好了,最后一步,执行假期计划吧:
代码语言:javascript复制int main() {
/*
* 第一天
*/
Holiday day1("9-30", City("桂林"));
day1.transport(new Train(), "成都", "桂林");
day1.eat(new Fish("剑骨鱼"));
day1.eat(new Taro("芋泥芥菜汤"));
/*
* 第二天
*/
Holiday day2("10-1", City("桂林"));
day2.eat(new RiceFlour("桂林米粉"));
day2.transport(new Taxi(), "桂林", "桂林磨盘山码头");
day2.transport(new Boat(), "桂林磨盘山码头", "阳朔龙头山码头");
day2.eat(new Dessert("绿豆马蹄清补凉"));
day2.transport(new Bus(), "阳朔", "桂林");
day2.eat(new Fish("啤酒鱼"));
day2.eat(new Taro("腊味蒸芋丝"));
/*
* 第三天
*/
Holiday day3("10-2", City("桂林"));
day3.eat(new RiceFlour("肠粉"));
day3.visit(new ScenicSpots("靖江王城"));
day3.visit(new ScenicSpots("两江四湖"));
day3.visit(new ScenicSpots("象山"));
day3.eat(new Dessert("黄桃糖水"));
day3.eat(new Food("凉皮"));
/*
* 第四天
*/
Holiday day4("10-3", City("北海"));
day4.transport(new Train(), "桂林", "北海");
day4.eat(new SeaFood("皮皮虾"));
day4.eat(new SeaFood("生蚝"));
day4.eat(new SeaFood("牡蛎煎蛋"));
day4.transport(new Boat(), "北海", "涠洲岛");
day4.visit(new ScenicSpots("石螺口海滩"));
day4.eat(new Dessert("芒果西露"));
day4.eat(new Noodle("重庆小面"));
/*
* 第五天
*/
Holiday day5("10-4", City("北海 涠洲岛"));
day5.transport(new EBike(), "涠洲岛", "涠洲岛");
day5.visit(new ScenicSpots("滴水丹屏"));
day5.visit(new ScenicSpots("鳄鱼山"));
day5.eat(new SeaFood("虾饼"));
day5.eat(new RiceFlour("汤粉"));
day5.transport(new Boat(), "涠洲岛", "北海");
day5.visit(new ScenicSpots("侨港风情街"));
day5.eat(new Dessert("芒果沙冰"));
/*
* 第六天
*/
Holiday day6("10-5", City("北海"));
day6.transport(new EBike(), "北海银滩", "北海老街");
day6.eat(new RiceFlour("鸡肉汤粉"));
day6.visit(new ScenicSpots("北海老街"));
day6.eat(new RiceFlour("螺蛳粉"));
day6.eat(new Dessert("银耳羹"));
day6.watch(new Movie("长津湖"));
day6.eat(new RiceFlour("炒粉"));
day6.eat(new Food("萝卜烧牛腩"));
/*
* 第七天
*/
Holiday day7("10-6", City("南宁"));
day7.transport(new Train(), "北海", "南宁");
/*
* 第八天
*/
Holiday day8("10-7", City("南宁 成都"));
day8.transport(new Train(), "南宁", "成都");
day8.eat(new Noodle("泡面"));
return 0;
}
最后执行一下,看看结果,旅游行程出炉啦:
代码语言:javascript复制---------------假日: 9-30 桂林 --------------
坐动车,从 成都 到 桂林
吃鱼: 剑骨鱼
吃芋头: 芋泥芥菜汤
---------------假日: 10-1 桂林 --------------
吃粉: 桂林米粉
坐出租车,从 桂林 到 桂林磨盘山码头
坐船,从 桂林磨盘山码头 到 阳朔龙头山码头
吃甜品: 绿豆马蹄清补凉
坐公交车,从 阳朔 到 桂林
吃鱼: 啤酒鱼
吃芋头: 腊味蒸芋丝
---------------假日: 10-2 桂林 --------------
吃粉: 肠粉
游玩: 靖江王城
游玩: 两江四湖
游玩: 象山
吃甜品: 黄桃糖水
吃美食: 凉皮
---------------假日: 10-3 北海 --------------
坐动车,从 桂林 到 北海
吃海鲜: 皮皮虾
吃海鲜: 生蚝
吃海鲜: 牡蛎煎蛋
坐船,从 北海 到 涠洲岛
游玩: 石螺口海滩
吃甜品: 芒果西露
吃面条: 重庆小面
---------------假日: 10-4 北海 涠洲岛 --------------
骑电瓶车,从 涠洲岛 到 涠洲岛
游玩: 滴水丹屏
游玩: 鳄鱼山
吃海鲜: 虾饼
吃粉: 汤粉
坐船,从 涠洲岛 到 北海
游玩: 侨港风情街
吃甜品: 芒果沙冰
---------------假日: 10-5 北海 --------------
骑电瓶车,从 北海银滩 到 北海老街
吃粉: 鸡肉汤粉
游玩: 北海老街
吃粉: 螺蛳粉
吃甜品: 银耳羹
看电影: 长津湖
吃粉: 炒粉
吃美食: 萝卜烧牛腩
---------------假日: 10-6 南宁 --------------
坐动车,从 北海 到 南宁
---------------假日: 10-7 南宁 成都 --------------
坐动车,从 南宁 到 成都
吃面条: 泡面
最后,PO几张涠洲岛的海景图,还有什么比大海更能让人忘记一切烦恼呢?
最后的最后:
如果你的假期要用一行代码来表示,该是什么呢?
是时候展示真正的技术了,快来秀出你的假期!