本文整理汇总了C++中mazewarinstance::Ptr::myRatIdIs方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::myRatIdIs方法的具体用法?C++ Ptr::myRatIdIs怎么用?C++ Ptr::myRatIdIs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mazewarinstance::Ptr
的用法示例。
在下文中一共展示了Ptr::myRatIdIs方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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
}
}
示例2: sizeof
/* This will presumably be modified by you.
It is here to provide an example of how to open a UDP port.
You might choose to use a different strategy
*/
void
netInit()
{
bool joinGame();
Sockaddr nullAddr;
Sockaddr *thisHost;
char buf[128];
int reuse;
u_char ttl;
struct ip_mreq mreq;
/* MAZEPORT will be assigned by the TA to each team */
M->mazePortIs(htons(MAZEPORT));
gethostname(buf, sizeof(buf));
if ((thisHost = resolveHost(buf)) == (Sockaddr *) NULL)
MWError("who am I?");
bcopy((caddr_t) thisHost, (caddr_t) (M->myAddr()), sizeof(Sockaddr));
M->theSocketIs(socket(AF_INET, SOCK_DGRAM, 0));
if (M->theSocket() < 0)
MWError("can't get socket");
/* SO_REUSEADDR allows more than one binding to the same
socket - you cannot have more than one player on one
machine without this */
reuse = 1;
if (setsockopt(M->theSocket(), SOL_SOCKET, SO_REUSEADDR, &reuse,
sizeof(reuse)) < 0) {
MWError("setsockopt failed (SO_REUSEADDR)");
}
nullAddr.sin_family = AF_INET;
nullAddr.sin_addr.s_addr = htonl(INADDR_ANY);
nullAddr.sin_port = M->mazePort();
if (bind(M->theSocket(), (struct sockaddr *)&nullAddr,
sizeof(nullAddr)) < 0)
MWError("netInit binding");
/* Multicast TTL:
0 restricted to the same host
1 restricted to the same subnet
32 restricted to the same site
64 restricted to the same region
128 restricted to the same continent
255 unrestricted
DO NOT use a value > 32. If possible, use a value of 1 when
testing.
*/
ttl = 32;
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_MULTICAST_TTL, &ttl,
sizeof(ttl)) < 0) {
MWError("setsockopt failed (IP_MULTICAST_TTL)");
}
/* uncomment the following if you do not want to receive messages that
you sent out - of course, you cannot have multiple players on the
same machine if you do this */
#if 0
{
u_char loop = 0;
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_MULTICAST_LOOP, &loop,
sizeof(loop)) < 0) {
MWError("setsockopt failed (IP_MULTICAST_LOOP)");
}
}
#endif
/* join the multicast group */
mreq.imr_multiaddr.s_addr = htonl(MAZEGROUP);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)
&mreq, sizeof(mreq)) < 0) {
MWError("setsockopt failed (IP_ADD_MEMBERSHIP)");
}
/*
* Now we can try to find a game to join; if none, start one.
*/
/* I haven't implemented joinGame or startGame in this sample */
/*
if (!joinGame())
startGame();
*/
printf("\n");
/* set up some stuff strictly for this local sample */
M->myRatIdIs(0);
M->scoreIs(0);
SetMyRatIndexType(0);
/* Get the multi-cast address ready to use in SendData()
calls. */
//.........这里部分代码省略.........
示例3: processPacket
void processPacket (MWEvent *eventPacket)
{
MW244BPacket *p = new MW244BPacket ;
p = eventPacket->eventDetail;
/*cout << p->ID<< endl;
cout << p->sequence_number<< endl;
cout << p->score<< endl;
cout << p->x_pos<< endl;
cout << p->y_pos<< endl;
cout << p->dir<< endl;
cout << p->tagged_rat<< endl;
cout << p->globalID<< endl;
ConvertIncoming(p);
cout << p->ID<< endl;
cout << p->sequence_number<< endl;
cout << p->score<< endl;
cout << p->x_pos<< endl;
cout << p->y_pos<< endl;
cout << p->dir<< endl;
cout << p->tagged_rat<< endl;
cout << p->globalID<< endl;
exit(0);*/
cout << "PP " << p->ID << endl;
if (myPacket(p, &eventPacket->eventSource) && join)// BECAUSE WHILE YOU ARE STILL 0, you will get packets with ID 0
{
return;
}
else {
if (!join && expected_seqno[p->ID] <= p->sequence_number){
if (p->globalID == 7) // What if there is only player with global ID 7? :/
{
cout << "You are one player too many :(" << endl;
cout << "Please try again later." << endl;
exit(0);
}
else
{ for (int i = 0; i < 100; i++)
cout << "Incrementing for no reason" << endl;
join = true;
GLOBAL_ID = p->globalID+1;
M->myRatIdIs(GLOBAL_ID);
setMapping();
UpdateScoreCard(0);
MW244BPacket q;
makePacket(&q,'h',-1, updateSeqNo);
sendPacketToPlayers(q);
participants[p->ID]++;
Rat r;
r.playing = 1;
cout << "NEW " << p->ID << endl;
r.x=p->x_pos;
r.y=p->y_pos;
r.dir=(p->dir);
M->mazeRats_[Mapping_idToIndex.find(p->ID)->second] = r;
rat_array[p-> ID]=new MW244BPacket;
rat_array[Mapping_idToIndex.find(p->ID)->second]=p;
Loc x(p->x_pos);
Loc y(p->y_pos);
Direction dir(p-> dir);
RatIndexType ratId(Mapping_idToIndex.find(p->ID)->second);
SetRatPosition(ratId, x, y, dir);
UpdateScoreCard(Mapping_idToIndex.find(p-> ID)->second);
expected_seqno[p->ID] = p->sequence_number + 1;
return;
}
}
if (GLOBAL_ID < p->globalID && expected_seqno[p->ID] <= p->sequence_number )
GLOBAL_ID = p->globalID;
if (p->status == 'a' && p->tagged_rat == M->myRatId().value())
{ // cannot discard expected_seqno[p->ID] <= p->sequence_number
// because we're getting this packet because the other side didn't get b :(
// MUST send b
MW244BPacket q;
makePacket(&q,'b',-1, updateSeqNo);
sendPacketToPlayers(q);
cout<<p->sequence_number<<"Seq number"<<endl;
cout<<prevseq_a[p->ID]<<"Previous Seq number"<<endl;
if (p->sequence_number > prevseq_a[p->ID])
{ // dealing with duplicates
DrawString("You have been tagged!",21,200,250);
M->scoreIs( M->score().value()-5 );
UpdateScoreCard(0);
NewPosition(M);
}
prevseq_a[p->ID] = p->sequence_number;
}
else if (p->status == 'a' && expected_seqno[p->ID] <= p->sequence_number){
//RatIndexType ratId(p-> ID);
//ClearRatPosition(ratId);
RatIndexType ratId( Mapping_idToIndex.find(p->ID)->second);
ClearRatPosition(ratId);
//.........这里部分代码省略.........
示例4: sizeof
void
netInit()
{
Sockaddr nullAddr;
Sockaddr *thisHost;
char buf[128];
int reuse;
u_char ttl;
struct ip_mreq mreq;
/* MAZEPORT will be assigned by the TA to each team */
M->mazePortIs(htons(MAZEPORT));
gethostname(buf, sizeof(buf));
if ((thisHost = resolveHost(buf)) == (Sockaddr *) NULL)
MWError("who am I?");
bcopy((caddr_t) thisHost, (caddr_t) (M->myAddr()), sizeof(Sockaddr));
M->theSocketIs(socket(AF_INET, SOCK_DGRAM, 0));
if (M->theSocket() < 0)
MWError("can't get socket");
/* SO_REUSEADDR allows more than one binding to the same
socket - you cannot have more than one player on one
machine without this */
reuse = 1;
if (setsockopt(M->theSocket(), SOL_SOCKET, SO_REUSEADDR, &reuse,
sizeof(reuse)) < 0) {
MWError("setsockopt failed (SO_REUSEADDR)");
}
nullAddr.sin_family = AF_INET;
nullAddr.sin_addr.s_addr = htonl(INADDR_ANY);
nullAddr.sin_port = M->mazePort();
if (bind(M->theSocket(), (struct sockaddr *)&nullAddr,
sizeof(nullAddr)) < 0)
MWError("netInit binding");
/* Multicast TTL:
0 restricted to the same host
1 restricted to the same subnet
32 restricted to the same site
64 restricted to the same region
128 restricted to the same continent
255 unrestricted
DO NOT use a value > 32. If possible, use a value of 1 when
testing.
*/
ttl = 1;
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_MULTICAST_TTL, &ttl,
sizeof(ttl)) < 0) {
MWError("setsockopt failed (IP_MULTICAST_TTL)");
}
/* join the multicast group */
mreq.imr_multiaddr.s_addr = htonl(MAZEGROUP);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
if (setsockopt(M->theSocket(), IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)
&mreq, sizeof(mreq)) < 0) {
MWError("setsockopt failed (IP_ADD_MEMBERSHIP)");
}
/*
* Now we can try to find a game to join; if none, start one.
*/
printf("\n");
/* set up some stuff strictly for this local sample */
//int temp = rand()%8;/*FIXME- REALLY REALLY RANDOM*/
M->myRatIdIs(0); // FIXME
//M->rat(M->myRatId().value()).playing=true;
//cout << M->myRatId().value() << endl;
//cout << temp << endl;
M->scoreIs(0);
SetMyRatIndexType(0);
/* Get the multi-cast address ready to use in SendData()
calls. */
memcpy(&groupAddr, &nullAddr, sizeof(Sockaddr));
groupAddr.sin_addr.s_addr = htonl(MAZEGROUP);
}