_C++精灵库算法可视化程序

张开发
2026/4/4 1:08:53 15 分钟阅读
_C++精灵库算法可视化程序
旁白在肖申克的高墙之内这群囚犯用“约瑟夫游戏”找到了一丝丝生活的乐趣。而安迪和瑞德也在这游戏中找到了彼此间的默契与友谊。这就是肖申克的故事一个关于希望与自由的故事。程序所有代码如下// 约瑟夫问题模拟算法可视化程序本程序需C精灵库V1.0.3。 // 下面拟有10个人报到3的出队索引从0开始从它开始报数。 #include sprites.h //包含C精灵库 using namespace std; Screen screen; int main(){ //主功能块 screen.bgcolor(black); //bubble0.png是红色的圆圈上面有0这些圆圈是用另一个程序生成的如果没有请自行生成 //bubble1.png是橙色的圆圈上面有1其它依次类推圆形颜色的色相相隔36。 vectorstringshapes {res/bubble0.png,res/bubble1.png,res/bubble2.png,res/bubble3.png,res/bubble4.png,res/bubble5.png,res/bubble6.png,res/bubble7.png,res/bubble8.png,res/bubble9.png}; vectorSprite* persons; for(int i0;i10;i){ //生成10个角色用不同颜色的圆圈代替 Sprite* j new Sprite(shapes[i]); j-setheading(360-i*3690); j-penup(); j-fd(160);j-setflag(alive);j-seth(0); persons.push_back(j); } Sprite bao{blank}; //在最上面写报数的数字的1,2,3的 bao.penup().sety(330).color(red); Sprite pen{blank}; //无造型的角色用于报告谁出队了 pen.penup().sety(250).color(magenta); //新建箭头造型的角色ptr Sprite ptr{res/pointer_blue.png}; //在中间的蓝色的指示器谁报到3了就会出队先把角色变成透明效果来表示 ptr.seth(90); //初始方向指向0号角色红色的上面写0的圆圈) bool diedflag[10]{false}; //描述是否出队的布尔数组 int baoshu 0; //报数器 int cntdied 0; //统计出队的人数 vectorint seq; //保存出队顺序 while(cntdied10){ for(int i0;i10;i){ if(diedflag[i]true)continue; //此人已死下一个 baoshu; ptr.setheading(360-i*3690); bao.cleartxts(1).write(to_string(baoshu),40); //最上面显示1,2,3 delay(1); if(baoshu3){ seq.push_back(i); persons[i]-setalpha(50); //透明表示已死 string s 编号 to_string(i) 已死; pen.cleartxts(1).write(s,33).wait(1); diedflag[i]true; baoshu0; cntdied; //死亡人数增加1 pen.cleartxts(1); } } } bao.cleartxts(1).write(出队序列,40); //最终出队顺序是2 5 8 1 6 0 7 4 9 3 下面可视化的显示这个序列 for(int i0;i10;i){ persons[seq[i]]-stamp(); //在原位置盖图章 persons[seq[i]]-setalpha(255); //恢复alpha通道为255 persons[seq[i]]-go(-200 i*50,250); //定位到上面去排成一行从而可视化显示出队序列 } screen.done(); //完成了 return 0; //返回0 }

更多文章