求助大神帮忙改错填充程序 ,交作业时间快截止了 题目在下面 用的easyx图形库
程序代码:
// ConsoleApplication68.cpp : 定义控制台应用程序的入口点。 // // ConsoleApplication65.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> #include<cstdlib> #include<iostream> #include<ctime> using namespace std; #define DISTANCE 70 /* 2013 11 14 乌龟 快速爬行 50% 前进3m/s 滑倒 20% 后退6m/s 缓慢爬行 30% 前进1m/s */ enum { RUNNING, REACH }; IMAGE wugui, tuzi; class animal { protected: int distance;//距离终点的距离 int time;//耗费的总时间 int state;//状态 public: virtual char* classname() { return ""; } virtual void draw(int x, int y, int w, int h) {} int getstate()const { return state; } int getDistance() { return distance; } bool reach() { if (distance <= 0) { distance = 0; state = REACH; return true; } cout << distance << "米" << endl; return false; } void goForward(int s) { distance -= s; distance = distance > 0 ? distance : 0; time++; } void prepare(int s) { distance = s; time = 0; state = RUNNING; } int gettime()const { return time; } virtual void fastspeed() {} virtual void slide() {} virtual void slowSpeed() {} virtual void bigStep() {} virtual void sleep() {} virtual void bigSlide() {} virtual void smallSlide() {} virtual void smallStep() {} virtual ~animal() {} }; class tortoise :public animal { private: const int FASTSPEED;//快速移动 const int SLIDE;//滑倒 const int SLOWSPEED;//慢速移动 public: virtual char* classname() { return "乌龟"; } tortoise(int fs, int s, int ss) :FASTSPEED(fs), SLIDE(s), SLOWSPEED(ss) {} void prepare(int s); void fastspeed() { goForward(FASTSPEED); } void slide() { goForward(SLIDE); } void slowSpeed() { goForward(SLOWSPEED); } virtual void draw(int x, int y, int w, int h) { putimage(x, y, x + w, y + h, &wugui, 0, 0, SRCCOPY); } }; class rabbit :public animal { private: const int BIGSTEP;//大步移动 const int SLEEP; // 觉 const int BIGSLIDE;//慢速移动 const int SMALLSLIDE;//小步滑倒 const int SMALLSTEP;//小步前进 public: virtual void draw(int x, int y, int w, int h) { putimage(x, y, x + w, y + h, &tuzi, 0, 0, SRCCOPY); } virtual char* classname() { return "兔子"; } rabbit(int bst, int s, int bsl, int ssl, int sst); void bigStep() { goForward(BIGSTEP); } void sleep() { goForward(SLEEP); } void bigSlide() { goForward(BIGSLIDE); } void smallSlide() { goForward(SMALLSLIDE); } void smallStep() { goForward(SMALLSTEP); } }; rabbit::rabbit(int bst, int s, int bsl, int ssl, int sst) : BIGSTEP(bst), SLEEP(s), BIGSLIDE(bsl), SMALLSLIDE(ssl), SMALLSTEP(sst) {} class match { vcetor <player*>playerlist; int Second; public: int getsecond() { return Second; } void start(); void nextSecond(); void add(player* p); void show()const; void draw(int HMAEGIN, int VMARGIN, int W, int H); void clear(int HMAEGIN, int VMARGIN, int W, int H); }; void match::show()const { for (size_t i = 0; i < playerlist.size(); i++) cout << i << "" << playerlist[i]->classname() << "" << playerlist[i]->gettime; } void match::add(player* p) { playerlist.push_back(p); } void match::start() { for (size_t i = 0; i < playerlist.size(); i++) playerlist[i]->prepare(DISTANCE); srand(int(::time(0))); Second = 0; } void match::draw(int HMARGIN, int VMARGIN, int W, int H) { int pw = 50; int ph = 50; for (size_t i = 0; i < playerlist.size(); i++) { playerlist[i]->draw(HMARGIN) + ((W - 2 * HMARGIN) / DISTANCE*(DISTANCE - playerlist[i])); } } void match::clear(int HMARGIN, int VMARGIN, int W, int H) { const int W = 50; const int h = 50; for (size_t i = 0; i < playerlist.size(); i++) { clearrectangle(HMARGIN) + ((W - 2 * HMARGIN) / DISTANCE*(DISTANCE - playerlist[i])); } } bool match::stop() { for (size_t i = 0; i < playerlist.size(); i++) { if (playerlist[i]->getstate != REACH) return false; } cout << "比赛已经结束" << endl; return true; } void match::nextSecond() { Second++; int n; clearrectangle(0, 0, 800, 400); for (size_t i = 0; i < playerlist.size(); i++) { player& p = *playerlist[i]; if (p.reach()) continue; n = rand(); if (typeid(p)-typeid(tortoise)) { switch (n % 10) { case 0: case 1: case 2: case 3: case 4:p.fastSpeed(); cout << "乌龟快速跑动,前进3米" << endl; break; case 5: case 6:p.slide(); cout << "乌龟滑倒,后退6米" << endl; break; case 7: case 8: case 9:p.slowSpeed(); cout << "乌龟慢速跑动,前进1米" << endl; break; } } else switch (n % 10) { case 0:p.bigSlide(); cout << "兔子大步滑倒,后退12米" << endl; break; case 1: case 2:p.sleep(); cout << "兔子睡觉,原地踏步" << endl; break; case 3: case 4:p.bigStep(); cout << "兔子大步跳跃,前进9米" << endl; break; case 5: case 6: case 7: p.smallStep(); cout << "兔子小步跳跃,前进1米" << endl; break; case 8: case 9:p.smallSlide(); cout << "兔子小步滑倒,后退2米" << endl; break; } }draw(100, 100, 800, 400); } int main(void) { rabbit r(9, 0, -12, -2, 1); tortoise t(3, -6, 1); rabbit r2(10, 0, -9, -3, 3); tortoise t2(4, -5, 2); loadimage(&wugui, _T("w.jpg")); loadimage(&tuzi, _T("t.jpg")); Resize(&wugui, 50, 50); Resize(&tuzi, 50, 50); match game; game.add(&r); game.add(&t2); game.add(&t2); cout << "按回车键开始龟兔赛跑,跑到总长度" << DISTANCE << endl; cin.get(); initgraph(800, 400, SHOWCONSOLE); game.start(); do { cout << "第" << game.getsecond() << "秒" << endl; game.nextSecond(); Sleep(300); cout << "***********************\n"; } while (!game.stop); cout << "比赛结果:" << endl; game.show(); system("pause"); return 0; }1考虑以下动物比赛,请写一个程序,在字符界面上演示比赛结果。假设比赛跑道长度为70米,以秒为单位回合制,其中一个到达终点则游戏结束,判断出胜负
动物
运动类型
几率
效果
乌龟
快速爬行
50%
前进3m/s
滑倒
20%
后退6m/s
缓慢爬行
30%
前进1m/s
兔子
睡觉
20%
原地不动
大步跳
20%
前进9m/s
大步滑倒
10%
后退12m/s
小步跳
30%
前进1m/s
小步滑倒
20%
后退2m/s
srand((unsigned)time(0)); 参数为种子,一般取系统时间为种子
rand();获得一个随机数,若要为0-10之间的,则rand()%10
Sleep函数,参数为停留的毫秒数,包含头文件windows.h
设计一个乌龟类,设计一个兔子类,模拟他们之间的赛跑。可以用一个专门的类来管理他们的赛跑。