求救,急,在线等待,拜托大家!(分不够可以加)

gamezealot gamezealot 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
要求:一个很简单的贪吃蛇!
1.整个界面(mfc)都要成为蛇的运行范围。
2.菜单中一个增加结点按钮,一个删除按钮。
3.上,下,左,右,控制蛇的方向。开始运行时向一个方向运动。
********************************************************
下面是我的代码:只实现了一部分
1.建立SDI文件。
2.在***view.cpp里
struct SNAKE
{
int x;
int y;
int flag;//1up,2down,3left,4right;
int lenth;
struct SNAKE *next;
}*tryit;
struct SNAKE *head,*insert;
3.构造函数里
tryit=(struct SNAKE*)malloc(sizeof(struct SNAKE));
tryit->flag=2;
tryit->lenth=1;
tryit->x=0;tryit->y=0;
4.***view::OnDraw()里
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
CRect rt;
rt.SetRect(0,0,400,300);
pDC->FillRect(&rt,&brush);
brush.DeleteObject();
GetClientRect(&rt);

CBrush nodbrush;
nodbrush.CreateSolidBrush(RGB(0,0,255));
pDC->SelectObject(&nodbrush);
CRect rt1;
rt1.SetRect(tryit->x,tryit->y,tryit->x+10,tryit->y+10);
pDC->FillRect(&rt1,&nodbrush);
nodbrush.DeleteObject();
SetTimer(1,300,NULL);
5.view::OnTimer()里
switch(tryit->flag)
{
case 1:
if(tryit->y<=0)
tryit->y=0;
else
tryit->y-=10;
DrawSnake(tryit->x,tryit->y,TRUE,tryit->flag);
break;
case 2:
if(tryit->y>=290)
tryit->y=290;
else
tryit->y+=10;
DrawSnake(tryit->x,tryit->y,TRUE,tryit->flag);
break;
case 3:
if(tryit->x<=0)
tryit->x=0;
else
tryit->x-=10;
DrawSnake(tryit->x,tryit->y,TRUE,tryit->flag);
break;
case 4:
if(tryit->x>=390)
tryit->x=390;
else
tryit->x+=10;
DrawSnake(tryit->x,tryit->y,TRUE,tryit->flag);
break;
}
6.onkeydown()里
switch(nChar)
{
case VK_UP:
tryit->flag=1;
break;
case VK_DOWN:
tryit->flag=2;
break;
case VK_LEFT:
tryit->flag=3;
break;
case VK_RIGHT:
tryit->flag=4;
break;
}
7.建立了一个drawsnake()函数,画蛇的一部分。

***View::DrawSnake(int x, int y, BOOL bErase,int nDir)
{ CDC* pDC=GetDC();
CBrush brush,cleanbrush;
CRect rt1;

brush.CreateSolidBrush(RGB(0,0,255));
pDC->SelectObject(&brush);
rt1.SetRect(x,y,x+10,y+10);
pDC->FillRect(&rt1,&brush);
brush.DeleteObject();
if(bErase)
{
cleanbrush.CreateSolidBrush(RGB(0,0,0));
pDC->SelectObject(&cleanbrush);
switch(nDir)
{
case 1:rt1.SetRect(x,y+10,x+10,y+20);break;//up;
case 2:rt1.SetRect(x,y-10,x+10,y);break;//down
case 3:rt1.SetRect(x+10,y,x+20,y+10);break;//left
case 4:rt1.SetRect(x-10,y,x,y+10);break;//right
}
pDC->FillRect(&rt1,&cleanbrush);
cleanbrush.DeleteObject();
}
}

我只是实现了一开始一个蛇结点运动,然后可以用方向控制,但增加和删除结点怎么实现,请大家帮帮忙,给多少分都没所谓。
...全文

相关推荐

正交拉丁超立方(OLHC)分组与实验设计(DOE)评估的优化Python实现.rar

正交拉丁超立方(OLHC)分组与实验设计(DOE)评估的优化Python实现.rar

天天Matlab科研工作室

Java微服务如何拆解审计日志查询服务

标题:Java微服务如何拆解审计日志查询服务 内容概要:围绕缓存策略、任务调度、回压控制和审计追踪,拆解Java微服务如何拆解审计日志查询服务的实现细节。 xdronline.com xdrea.com 9g.xinmei6.com xinghaohuanbao.com m.xiker66.com

2601_97068614

港股十档行情tick数据涵盖逐笔成交与委托,记录每笔买卖价格、成交量及挂单明细 逐笔数据包含成交时间、价格、股数、成交方向,委托数据展示买一至买十、卖一至卖十的价格与数量

港股十档行情tick数据涵盖逐笔成交与委托,记录每笔买卖价格、成交量及挂单明细。逐笔数据包含成交时间、价格、股数、成交方向,委托数据展示买一至买十、卖一至卖十的价格与数量。分钟数据汇总每分钟开盘价、最高价、最低价、收盘价、成交量及成交额。历史行情覆盖近十五年,字段清晰完整,便于回溯分析。 数据源:CMES金融数据库

2401_89140926

MO-372A_PQFP-F6_I1p27-R3p8x4p48Z1p1-N5p5C1p24.stp

MO-372A_PQFP-F6_I1p27-R3p8x4p48Z1p1-N5p5C1p24.stp

std86021

光伏储能虚拟同步发电机VSG并网仿真模型(Similink仿真实现)

内容概要:本文介绍了一种光伏储能虚拟同步发电机(VSG)并网的Simulink仿真模型,旨在通过仿真手段实现新能源系统与电网的高效协同运行。该模型深度融合光伏发电与储能系统,借助虚拟同步发电机技术有效提升系统的惯性和阻尼特性,从而显著增强电网在高比例可再生能源接入背景下的稳定性。文中重点阐述了VSG在频率调节、电压支撑及动态响应等方面的优越性能,并提供了完整的仿真框架,支持研究人员进行控制策略优化、参数调整与系统性能验证,有助于推动智能电网与新能源并网技术的发展。; 适合人群:具备一定电力系统基础知识和Simulink仿真经验的科研人员、电气工程及相关专业的研究生或从事新能源并网技术研发的工程师。; 使用场景及目标:① 研究光伏储能系统并网的动态行为;② 设计与优化虚拟同步发电机的控制策略以提高电网稳定性;③ 验证新型控制算法在多时间尺度调度中的有效性;④ 教学演示新能源系统与电网互动的物理机制。; 阅读建议:建议读者结合提供的仿真模型与代码,深入理解VSG的工作原理,尝试修改控制参数以观察系统响应变化,并参考文中提及的Matlab代码实现方式,进一步开展个性化研究与创新设计。

荔枝科研社
评论 13
收藏 已收藏
分享
返回顶部
gamezealot
VC/MFC 16,550 成员 421,606 内容