资源简介
需求
该程序设计的是一个狼吃羊的小故事,大灰狼吃小绵羊 。所有大灰狼和小绵羊都在青青草原中生活。系统首先初始化大灰狼们和小绵羊们的基本信息。经过一段时间的自动运行。查看当前系统的基本情况。
1) 每个大灰狼和小绵羊都具有位置信息,性别、年龄等基本信息。
2) 大灰狼和小绵羊都有一定的生存规则,如运动规则,繁殖规则(年龄、性别),死亡规则(年龄),捕食规则(可以通过位置判定可以捕食,小绵羊可以逃跑)等。
3) 程序初始化时,需要初始化大灰狼和小绵羊的数量,随机生成每个生物的基本信息。并打印输出。
4) 通过键盘输入运行时间。
5) 程序根据运行时间运行,大灰狼和小绵羊按照自己的生存规则运行。
6) 程序需要输出生存期间的重要事件(如捕食、逃脱、繁殖等)。
7) 运行结束,输出当前青青草原中大灰狼和小绵羊的基本信息(数量,基本信息)。
2. 问题分析
本题的设计思路如下,建立生物基类,并派生出大灰狼、小绵羊的子类。根据需要建立类的成员函数和成员方法,其中包括捕食、死亡等多态方法。在main函数中采用数组和new动态生成用户需要生成的狼和羊的数量及基本信息。该题目主要涉及到的知识点有:继承、派生、多态。
代码片段和文件信息
#include “stdafx.h“
#include “Animal.h“
CAnimal::CAnimal()
{
m_CPPoint = cvPoint(12020);
}
CAnimal::~CAnimal()
{
}
void CAnimal::Draw(CDC * pdc)
{
HBITMAP h;
h = (HBITMAP)LoadImage(NULL
m_picString
IMAGE_BITMAP
0 0
LR_LOADFROMFILE);
CBitmap * tempimg = CBitmap::FromHandle(h);//获得位图对象指针
CDC memDC;
memDC.CreateCompatibleDC(pdc); //创建内存兼容DC
CBitmap* pOldBitmap = memDC.Selectobject(tempimg);
BITMAP bm;
tempimg->Getobject(sizeof(BITMAP) &bm);//获得位图的大小
CRect rect;
rect.left = 12 + m_CPPoint.x;
rect.top = 199;
rect.right = rect.left + bm.bmWidth + 12;
rect.bottom = rect.top + m_CPPoint.y;
//透明贴图
TransparentBlt(*pdc m_CPPoint.x m_CPPoint.y
bm.bmWidth bm.bmHeight memDC 0 0 bm.bmWidth bm.bmHeight
RGB(255 255 255));
pdc->SetBkMode(TRANSPARENT);
memDC.Selectobject(pOldBitmap);
Deleteobject(memDC);
Deleteobject(h);
}
void CAnimal::Run(CDC * pdc)
{
Draw(pdc);
}
bool CAnimal::Breed()
{
return true;
}
void CAnimal::SaveMsg( FILE *os )
{
if (os == NULL)
{
AfxMessageBox(_T(“打开文件错误“)0);
return ;
}
/*char* str = new char[15];*/
/*sprintf_s(str15“NowAge : %d\n“m_nNowAge);*/
fprintf_s(os“NowAge : %d\n“m_nNowAge);
fprintf_s(os“DieAge : %d\n“m_nDieAge);
fprintf_s(os“Sex : %d\n“m_nSex);
fprintf_s(os“WeddingAge : %d\n\n“m_nBreed);
fclose(os);
}
评论
共有 条评论