MFC界面 约瑟夫环


实现一个游戏:N个玩家围成一个圆圈,玩家序号分别是1~N,顺势针排列;选一个报数值M。从玩家1开始按顺时针方向自1开始顺序报数,报到M时停止报数,报M的人被淘汰出列,然后从他顺时针方向上的下一个人开始重新报数,如此下去,直到圆圈中只剩下一个人,这个幸存者就是游戏的胜利者。输出游戏中玩家出局的顺序(包括游戏胜利者)。 例子:如有6个玩家,报数值为3,则玩家出局顺序为3-6-4-2-5-1 ---------------------------------------------- 仅供参考
资源截图
代码片段和文件信息
// Game.cpp: implementation of the Game class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “Game.h“
#include “JosephGameDlg.h“
#include “Resource.h“

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
struct clink
{
int num;
struct clink *next;
};
struct clink *head;

Game::Game(CJosephGameDlg* _dlgint aint b)
{
dlg = _dlg;
playernum = a;
distance = b;
}


int Game::GetNum()
{
return playernum;
}


int Game::GetDis()
{
return distance;
}


void Game::Init()          //使用带表头附加结点的循环单链表
{
struct clink *p;
int i;

head = (struct clink *)malloc(sizeof(struct clink));
head->next = head;

for(i=playernum; i>=1; i--)  //生成含有n个结点的,结点值依次为1-n的带表头附加结点的循环表
{
p = (struct clink *)malloc(sizeof(struct clink));   //生成新结点
p->num = i;      
p->next=head->next;    //把新结点插入到表头
head->next=p;
}
}


void Game::Joseph()
{
int i;
char st[5];
CString s;
CEdit *p;
struct clink *cur = head;

while(cur->next!=cur)
{
for(i=1; i {
cur=cur->next;
if(cur==head)
{
cur=cur->next;
}
}
if(cur->next == head)
cur=cur->next;

p = (CEdit *)dlg->GetDlgItem(IDC_EDIT_OUT);   //感慨良多
p->GetWindowText(s);
_itoa(cur->next->numst10);
s = s + “ “ + st;
p->SetWindowText(s);
{
struct clink *temp;
temp=cur->next;
cur->next=cur->next->next;
free(temp);
}
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7596  2010-08-12 16:24  JosephGameDebugGame.obj

     文件          0  2010-08-12 16:24  JosephGameDebugGame.sbr

     文件    5088256  2010-08-12 19:34  JosephGameDebugJosephGame.bsc

     文件     110667  2010-08-12 19:34  JosephGameDebugJosephGame.exe

     文件     204412  2010-08-12 19:34  JosephGameDebugJosephGame.ilk

     文件      13950  2010-08-12 16:19  JosephGameDebugJosephGame.obj

     文件    7075400  2010-08-12 10:21  JosephGameDebugJosephGame.pch

     文件     386048  2010-08-12 19:34  JosephGameDebugJosephGame.pdb

     文件       2760  2010-08-12 16:19  JosephGameDebugJosephGame.res

     文件          0  2010-08-12 16:19  JosephGameDebugJosephGame.sbr

     文件      26564  2010-08-12 19:34  JosephGameDebugJosephGameDlg.obj

     文件          0  2010-08-12 19:34  JosephGameDebugJosephGameDlg.sbr

     文件     105927  2010-08-12 10:21  JosephGameDebugStdAfx.obj

     文件    1370190  2010-08-12 10:21  JosephGameDebugStdAfx.sbr

     文件     214016  2010-08-12 19:34  JosephGameDebugvc60.idb

     文件     364544  2010-08-12 19:34  JosephGameDebugvc60.pdb

     文件       1657  2010-08-12 16:23  JosephGameGame.cpp

     文件        646  2010-08-12 12:38  JosephGameGame.h

     文件      21176  2010-08-12 19:31  JosephGameJosephGame.aps

     文件       1379  2010-08-12 19:35  JosephGameJosephGame.clw

     文件       2119  2010-08-11 16:58  JosephGameJosephGame.cpp

     文件       4352  2010-08-12 11:04  JosephGameJosephGame.dsp

     文件        526  2010-08-11 16:58  JosephGameJosephGame.dsw

     文件       1368  2010-08-11 16:58  JosephGameJosephGame.h

     文件      66560  2010-08-12 19:35  JosephGameJosephGame.ncb

     文件      53760  2010-08-12 19:35  JosephGameJosephGame.opt

     文件        944  2010-08-12 19:34  JosephGameJosephGame.plg

     文件       5619  2010-08-12 15:04  JosephGameJosephGame.rc

     文件       4420  2010-08-12 19:34  JosephGameJosephGameDlg.cpp

     文件       1460  2010-08-12 15:04  JosephGameJosephGameDlg.h

............此处省略12个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)