本文整理汇总了C++中mazewarinstance::Ptr类的典型用法代码示例。如果您正苦于以下问题:C++ Ptr类的具体用法?C++ Ptr怎么用?C++ Ptr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Ptr类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: NewPosition
void NewPosition(MazewarInstance::Ptr m)
//void NewPosition(MazewarInstance *m)
{
Loc newX(0);
Loc newY(0);
Direction dir(0); /* start on occupied square */
while (M->maze_[newX.value()][newY.value()]) {
/* MAZE[XY]MAX is a power of 2 */
newX = Loc(random() & (MAZEXMAX - 1));
newY = Loc(random() & (MAZEYMAX - 1));
/* In real game, also check that square is
unoccupied by another rat */
}
/* prevent a blank wall at first glimpse */
if (!m->maze_[(newX.value())+1][(newY.value())]) dir = Direction(NORTH);
if (!m->maze_[(newX.value())-1][(newY.value())]) dir = Direction(SOUTH);
if (!m->maze_[(newX.value())][(newY.value())+1]) dir = Direction(EAST);
if (!m->maze_[(newX.value())][(newY.value())-1]) dir = Direction(WEST);
m->xlocIs(newX);
m->ylocIs(newY);
m->dirIs(dir);
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:27,代码来源:toplevel.cpp
示例2: ratStates
void ratStates()
{
/* In our sample version, we don't know about the state of any rats over
the net, so this is a no-op */
for (int i = 0; i < 8 ; i++)
if (i != M->myRatId().value() && participants[i] == 0 && M->mazeRats_[Mapping_idToIndex.find(i)->second].playing)// no packet from this dude
{ cout << i << endl;
//M->mazeRats_[Mapping_idToIndex.find(i)->second].playing = false;
rat_array[Mapping_idToIndex.find(i)->second] = NULL;
RatIndexType ratId( Mapping_idToIndex.find(i)->second);
ClearRatPosition(ratId);
}
for (int i = 0; i < 8; i++)
cout << "bool" << M->mazeRats_[i].playing << endl;
if (!( M->mazeRats_[1].playing || M->mazeRats_[2].playing || M->mazeRats_[3].playing || M->mazeRats_[4].playing || M->mazeRats_[5].playing || M->mazeRats_[6].playing || M->mazeRats_[7].playing)) // this means that there are no other players :O
{
M->myRatIdIs(0);
M->scoreIs(0);
SetMyRatIndexType(0);
Mapping_idToIndex.clear();
Mapping_indexToId.clear();
play();//main(0,NULL); // start over
}
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:28,代码来源:toplevel.cpp
示例3: DoViewUpdate
void DoViewUpdate()
{
mws_render_wipe(M->state);
mws_render_draw(M->state);
/* XXX: Hack. I don't want to deal with setting updateView in
* the mws_* methods, thus just always update view, even
* if it is unnecessary.
*/
updateView = TRUE;
if (updateView) { /* paint the screen */
/* XXX: I don't think this is necessary anymore as the
* mws_render_* functions take care of it.
ShowPosition(MY_X_LOC, MY_Y_LOC, MY_DIR);
*/
if (M->peeking())
ShowView(M->xPeek(), M->yPeek(), M->dirPeek());
else
ShowView(MY_X_LOC, MY_Y_LOC, MY_DIR);
updateView = FALSE;
}
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:25,代码来源:toplevel.cpp
示例4: shoot
void shoot()
{
mw_score_t score;
mws_fire_missile(M->state, M->local_id);
/* XXX: Should check return code in case of error. */
mws_get_rat_score(M->state, M->local_id, &score);
M->scoreIs(score);
UpdateScoreCard(M->myRatId().value());
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:10,代码来源:toplevel.cpp
示例5: DoViewUpdate
void DoViewUpdate()
{
if (updateView) { /* paint the screen */
ShowPosition(MY_X_LOC, MY_Y_LOC, MY_DIR);
if (M->peeking())
ShowView(M->xPeek(), M->yPeek(), M->dirPeek());
else
ShowView(MY_X_LOC, MY_Y_LOC, MY_DIR);
updateView = FALSE;
}
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:11,代码来源:toplevel.cpp
示例6: shoot
void shoot()
{
if (proj.present) return;
proj.present = true;
proj.x = M->xloc().value();
proj.y = M->yloc().value();
proj.prev_x = proj.prev_y = 0;
proj.direction = M->dir().value();
gettimeofday(&proj.shootTime, NULL);
M->scoreIs( M->score().value()-1 );
UpdateScoreCard(0);
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:12,代码来源:toplevel.cpp
示例7: main
int main(int argc, char *argv[])
{
Loc x(1);
Loc y(5);
Direction dir(0);
char *ratName;
signal(SIGHUP, quit);
signal(SIGINT, quit);
signal(SIGTERM, quit);
if (argc >= 2)
ratName = strdup(argv[1]);
else
getName("Welcome to CS244B MazeWar!\n\nYour Name", &ratName);
M = MazewarInstance::mazewarInstanceNew(string(ratName));
MazewarInstance* a = M.ptr();
strncpy(M->myName_, ratName, NAMESIZE);
free(ratName);
MazeInit(argc, argv);
mws_add_rat(M->state, &M->local_id, MY_X_LOC, MY_Y_LOC, MY_MW_DIR_T,
M->myName_);
mws_set_local_rat(M->state, M->local_id);
play();
return (0);
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:31,代码来源:toplevel.cpp
示例8: main
/* ----------------------------------------------------------------------- */
int main(int argc, char *argv[])
{
Loc x(1);
Loc y(5);
Direction dir(0);
char *ratName;
signal(SIGHUP, quit);
signal(SIGINT, quit);
signal(SIGTERM, quit);
struct timeval zero;
struct timeval now;
gettimeofday(&now, NULL);
start_time = time_diff(now, zero);
getName("Welcome to CS244B MazeWar!\n\nYour Name", &ratName);
ratName[strlen(ratName)-1] = 0;
M = MazewarInstance::mazewarInstanceNew(string(ratName));
MazewarInstance* a = M.ptr();
strncpy(M->myName_, ratName, NAMESIZE);
free(ratName);
MazeInit(argc, argv);
NewPosition(M);
play();
return 0;
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:29,代码来源:toplevel.cpp
示例9: makePacket
void makePacket(MW244BPacket *p, char status, int killed, bool UpdateSeqNo)
{
strncpy(p->Name,M->myName_,NAMESIZE );
p-> ID = M->myRatId().value();
cout << "ID from packet: " << M->myRatId().value() << endl;
if (UpdateSeqNo) ++my_seq_no;
p-> sequence_number = my_seq_no;
p -> tagged_rat = killed;
p->score = M->score().value();
p->x_pos = MY_X_LOC;
p->y_pos = MY_Y_LOC;
p-> dir = MY_DIR;
p-> status = status;
p-> globalID = GLOBAL_ID;
p -> time = start_time;
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:16,代码来源:toplevel.cpp
示例10: sendPacketToPlayers
void sendPacketToPlayers(MW244BPacket p)
{
ConvertOutgoing(&p);
if (sendto(M->theSocket(), &p, sizeof(MW244BPacket), 0, (struct sockaddr *)&groupAddr, sizeof(Sockaddr)) < 0)
MWError("Sample error");
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:9,代码来源:toplevel.cpp
示例11: _backward
void _backward()
{
register int tx = MY_X_LOC;
register int ty = MY_Y_LOC;
switch(MY_DIR) {
case NORTH: if (!M->maze_[tx-1][ty]) tx--; break;
case SOUTH: if (!M->maze_[tx+1][ty]) tx++; break;
case EAST: if (!M->maze_[tx][ty-1]) ty--; break;
case WEST: if (!M->maze_[tx][ty+1]) ty++; break;
default:
MWError("bad direction in Backward");
}
if ((MY_X_LOC != tx) || (MY_Y_LOC != ty)) {
M->xlocIs(Loc(tx));
M->ylocIs(Loc(ty));
updateView = TRUE;
}
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:19,代码来源:toplevel.cpp
示例12: GetRatScore
/* This is just for the sample version, rewrite your own */
Score GetRatScore(RatIndexType ratId)
{
if (ratId.value() == 0 )
{ return(M->score()); }
else
{
if(rat_array[(ratId.value())]==NULL)
return 0;
else
return rat_array[ratId.value()]->score;
}
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:14,代码来源:toplevel.cpp
示例13: peekRight
void peekRight()
{
M->xPeekIs(MY_X_LOC);
M->yPeekIs(MY_Y_LOC);
M->dirPeekIs(MY_DIR);
switch(MY_DIR) {
case NORTH: if (!M->maze_[MY_X_LOC+1][MY_Y_LOC]) {
M->xPeekIs(MY_X_LOC + 1);
M->dirPeekIs(EAST);
}
break;
case SOUTH: if (!M->maze_[MY_X_LOC-1][MY_Y_LOC]) {
M->xPeekIs(MY_X_LOC - 1);
M->dirPeekIs(WEST);
}
break;
case EAST: if (!M->maze_[MY_X_LOC][MY_Y_LOC+1]) {
M->yPeekIs(MY_Y_LOC + 1);
M->dirPeekIs(SOUTH);
}
break;
case WEST: if (!M->maze_[MY_X_LOC][MY_Y_LOC-1]) {
M->yPeekIs(MY_Y_LOC - 1);
M->dirPeekIs(NORTH);
}
break;
default:
MWError("bad direction in PeekRight");
}
/* if any change, display the new view without moving! */
if ((M->xPeek() != MY_X_LOC) || (M->yPeek() != MY_Y_LOC)) {
M->peekingIs(TRUE);
updateView = TRUE;
}
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:42,代码来源:toplevel.cpp
示例14:
void
__rightTurn(void)
{
M->dirIs(_rightTurn[MY_DIR]);
updateView = TRUE;
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:6,代码来源:toplevel.cpp
示例15: return
/* This is just for the sample version, rewrite your own */
char *GetRatName(RatIndexType ratId)
{
if (ratId.value() == M->myRatId().value())
{ return(M->myName_); }
else { return ("Dummy"); }
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:7,代码来源:toplevel.cpp
示例16: play
/* ----------------------------------------------------------------------- */
void play(void)
{ // initialisation
cout << "Starting Play" << endl;
//SetRatPosition(7,1,5,0);
proj.present = false;
proj.prev_x = proj.prev_y = proj.x = proj.y = 1;
int turn = 0;
updateSeqNo = true;
join = false;
for (int k = 0; k < 8; k++)
participants[k] = prevseq_a[k] = 0;
for (int k = 0; k < 8; k++)
expected_seqno[k] = k+1;
GLOBAL_ID = 0;
checking = 1;
checkingzero=1;
MWEvent event;
MW244BPacket incoming;
event.eventDetail = &incoming;
while (TRUE) {
turn ++;
NextEvent(&event, M->theSocket());
if (!M->peeking())
switch(event.eventType) {
case EVENT_A:
aboutFace();
break;
case EVENT_S:
leftTurn();
break;
case EVENT_D:
forward();
break;
case EVENT_F:
rightTurn();
break;
case EVENT_LEFT_D:
peekLeft();
break;
case EVENT_BAR:
shoot();
break;
case EVENT_RIGHT_D:
peekRight();
break;
case EVENT_NETWORK:
processPacket(&event);
break;
case EVENT_TIMEOUT:
checking = (++checking) % 25;
if (checking == 0 && !join){
cout << "Setting ID to zero" << endl;
join = true;
setMapping();
}
else {cout << "TIMEOUT" << endl;
participation = (++participation) % 30;
manageMissiles();
if (participation == 29)
{ ratStates(); /* clean house */
for (int i = 0 ; i < 8 ; i++)
participants[i] = 0;
}
}
break;
case EVENT_INT:
quit(0);
break;
}
else
switch (event.eventType) {
case EVENT_RIGHT_U:
case EVENT_LEFT_U:
peekStop();
break;
case EVENT_NETWORK:
processPacket(&event);
break;
}
DoViewUpdate();
checking ++;
manageMissiles();
//.........这里部分代码省略.........
开发者ID:kalimfaria,项目名称:mazewar,代码行数:101,代码来源:toplevel.cpp
示例17: manageMissiles
void manageMissiles()
{
if (!proj.present)
return;
struct timeval now;
gettimeofday(&now, NULL);
int x = proj.x, y = proj.y;
int elapsed_time = time_diff(now, proj.shootTime);
int distance_travelled = elapsed_time * projectile_speed;
if (proj.direction == 0)
x += distance_travelled;
else if (proj.direction == 1)
x -= distance_travelled;
else if (proj.direction == 2)
y += distance_travelled;
else if (proj.direction == 3)
y -= distance_travelled;
if (MY_X_LOC == x && MY_Y_LOC == y)
return;
if (M->maze_[x][y]) {
// hit wall
clearProjectile();
return;
}
for (int i = 0; i < 8; i++)
{
if (M->mazeRats_[i].playing && M->mazeRats_[i].x.value() == x && y == M->mazeRats_[i].y.value())
{
MW244BPacket p;
makePacket(&p,'a',Mapping_indexToId.find(i)->second, updateSeqNo);
proj.prev_x = x;
proj.prev_y = y;
sendPacketToPlayers(p);
updateSeqNo = false;
checkingzero = 0;
RatIndexType ratId(i);
kills = Mapping_indexToId.find(i)->second;
clearProjectile();
M->scoreIs( M->score().value() + 11 );
UpdateScoreCard(0);
DrawString("You have tagged a player!",25,200,250);
ClearRatPosition(ratId);
}
}
if (proj.prev_x == 0 && proj.prev_y == 0) proj.prev_x = proj.prev_y = 1;
showMissile(x, y, proj.direction,
proj.prev_x, proj.prev_y,
true);
proj.prev_x = x;
proj.prev_y = y;
if (updateSeqNo && join)
{
MW244BPacket p;
makePacket(&p,'t',-1, updateSeqNo);
sendPacketToPlayers(p);
}
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:63,代码来源:toplevel.cpp
示例18: forward
/* ----------------------------------------------------------------------- */
void forward(void)
{
bool allow = true;
register int tx = MY_X_LOC;
register int ty = MY_Y_LOC;
switch(MY_DIR) {
case NORTH:
{
for (int i = 0; i < 8 ; i++)
{
if(rat_array[i] != NULL)
{
if (M->mazeRats_[i].x.value() == MY_X_LOC+1 && MY_Y_LOC == M->mazeRats_[i].y.value())
{
allow = false;
break;
}
}
}
break;
}
case SOUTH:
{
for (int i = 0; i < 8 ; i++)
{
if(rat_array[i] != NULL)
{
if (M->mazeRats_[i].x.value() == MY_X_LOC-1 && MY_Y_LOC == M->mazeRats_[i].y.value())
{
allow = false;
break;
}
}
}
break;
}
case EAST:
{
for (int i = 0; i < 8 ; i++)
{
if(rat_array[i] != NULL)
{
if (M->mazeRats_[i].x.value() == MY_X_LOC && MY_Y_LOC+1 == M->mazeRats_[i].y.value())
{
allow = false;
break;
}
}
}
break;
}
case WEST:
{
for (int i = 0; i < 8 ; i++)
{
if(rat_array[i] != NULL)
{
if (M->mazeRats_[i].x.value() == MY_X_LOC && MY_Y_LOC-1 == M->mazeRats_[i].y.value())
{
allow = false;
break;
}
}
}
break;
}
default:
exit(0);
}
if (allow){
switch(MY_DIR) {
case NORTH: if (!M->maze_[tx+1][ty]) tx++; break;
case SOUTH: if (!M->maze_[tx-1][ty]) tx--; break;
case EAST: if (!M->maze_[tx][ty+1]) ty++; break;
case WEST: if (!M->maze_[tx][ty-1]) ty--; break;
default:
MWError("bad direction in Forward");
}
if ((MY_X_LOC != tx) || (MY_Y_LOC != ty)) {
M->xlocIs(Loc(tx));
M->ylocIs(Loc(ty));
updateView = TRUE;
}
}
}
开发者ID:kalimfaria,项目名称:mazewar,代码行数:91,代码来源:toplevel.cpp
示例19: peekStop
void peekStop()
{
M->peekingIs(FALSE);
updateView = TRUE;
}
开发者ID:lufenghuan,项目名称:cs244b-mazewar,代码行数:5,代码来源:toplevel.cpp
示例20: setMapping
void setMapping()
{
participation = 0;
if (M->myRatId().value() == 7)
{
Mapping_idToIndex.insert(pair<int, int>(7,0));
for(int i = 0; i < 7 ; i++)
Mapping_idToIndex.insert(pair<int, int>(i,i+1));
Mapping_indexToId.insert(pair<int, int>(0,7));
Mapping_indexToId.insert(pair<int, int>(1,0));
Mapping_indexToId.insert(pair<int, int>(2,1));
Mapping_indexToId.insert(pair<int, int>(3,2));
Mapping_indexToId.insert(pair<int, int>(4,3));
Mapping_indexToId.insert(pair<int, int>(5,4));
Mapping_indexToId.insert(pair<int, int>(6,5));
Mapping_indexToId.insert(pair<int, int>(7,6));
}
else if (M->myRatId().value() == 6)
{
Mapping_idToIndex.insert(pair<int, int>(6,0));
Mapping_idToIndex.insert(pair<int, int>(7,1));
for(int i = 0; i < 6; i++)
Mapping_idToIndex.insert(pair<int, int>(i,i+2));
Mapping_indexToId.insert(pair<int, int>(0,6));
Mapping_indexToId.insert(pair<int, int>(1,7));
Mapping_indexToId.insert(pair<int, int>(2,0));
Mapping_indexToId.insert(pair<int, int>(3,1));
Mapping_indexToId.insert(pair<int, int>(4,2));
Mapping_indexToId.insert(pair<int, int>(5,3));
Mapping_indexToId.insert(pair<int, int>(6,4));
Mapping_indexToId.insert(pair<int, int>(7,5));
}
else if (M->myRatId().value() == 5)
{
Mapping_idToIndex.insert(pair<int, int>(5,0));
Mapping_idToIndex.insert(pair<int, int>(6,1));
Mapping_idToIndex.insert(pair<int, int>(7,2));
for(int i = 0; i < 5; i++)
Mapping_idToIndex.insert(pair<int, int>(i,i+3));
Mapping_indexToId.insert(pair<int, int>(0,5));
Mapping_indexToId.insert(pair<int, int>(1,6));
Mapping_indexToId.insert(pair<int, int>(2,7));
Mapping_indexToId.insert(pair<int, int>(3,0));
Mapping_indexToId.insert(pair<int, int>(4,1));
Mapping_indexToId.insert(pair<int, int>(5,2));
Mapping_indexToId.insert(pair<int, int>(6,3));
Mapping_indexToId.insert(pair<int, int>(7,4));
}
else if (M->myRatId().value() == 4)
{
Mapping_idToIndex.insert(pair<int, int>(4,0));
Mapping_idToIndex.insert(pair<int, int>(5,1));
Mapping_idToIndex.insert(pair<int, int>(6,2));
Mapping_idToIndex.insert(pair<int, int>(7,3));
for(int i = 0; i < 4; i++)
Mapping_idToIndex.insert(pair<int, int>(i,i+4));
Mapping_indexToId.insert(pair<int, int>(0,4));
Mapping_indexToId.insert(pair<int, int>(1,5));
Mapping_indexToId.insert(pair<int, int>(2,6));
Mapping_indexToId.insert(pair<int, int>(3,7));
Mapping_indexToId.insert(pair<int, int>(4,0));
Mapping_indexToId.insert(pair<int, int>(5,1));
Mapping_indexToId.insert(pair<int, int>(6,2));
Mapping_indexToId.insert(pair<int, int>(7,3));
}
else if (M->myRatId().value() == 3)
{
Mapping_idToIndex.insert(pair<int, int>(3,0));
Mapping_idToIndex.insert(pair<int, int>(4,1));
Mapping_idToIndex.insert(pair<int, int>(5,2));
Mapping_idToIndex.insert(pair<int, int>(6,3));
Mapping_idToIndex.insert(pair<int, int>(7,4));
for(int i = 0; i < 3; i++)
Mapping_idToIndex.insert(pair<int, int>(i,i+5));
Mapping_indexToId.insert(pair<int, int>(0,3));
Mapping_indexToId.insert(pair<int, int>(1,4));
Mapping_indexToId.insert(pair<int, int>(2,5));
Mapping_indexToId.insert(pair<int, int>(3,6));
Mapping_indexToId.insert(pair<int, int>(4,7));
Mapping_indexToId.insert(pair<int, int>(5,0));
Mapping_indexToId.insert(pair<int, int>(6,1));
Mapping_indexToId.insert(pair<int, int>(7,2));
}
else if (M->myRatId().value() == 2)
{
Mapping_idToIndex.insert(pair<int, int>(2,0));
Mapping_idToIndex.insert(pair<int, int>(3,1));
Mapping_idToIndex.insert(pair<int, int>(4,2));
Mapping_idToIndex.insert(pair<int, int>(5,3));
Mapping_idToIndex.insert(pair<int, int>(6,4));
Mapping_idToIndex.insert(pair<int, int>(7,5));
for(int i = 0; i < 2; i++)
Mapping_idToIndex.insert(pair<int, int>(i,i+6));
Mapping_indexToId.insert(pair<int, int>(0,2));
Mapping_indexToId.insert(pair<int, int>(1,3));
Mapping_indexToId.insert(pair<int, int>(2,4));
Mapping_indexToId.insert(pair<int, int>(3,5));
Mapping_indexToId.insert(pair<int, int>(4,6));
Mapping_indexToId.insert(pair<int, int>(5,7));
//.........这里部分代码省略.........
开发者ID:kalimfaria,项目名称:mazewar,代码行数:101,代码来源:toplevel.cpp
注:本文中的mazewarinstance::Ptr类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论