0

共有メモリを使用する簡単なチェスゲームを作成しています。ゲームには2人のプレイヤー(黒、白)がいて、彼らは厳格な交代の原則で働いています。私はすべてのプレイヤーからターン制の意味でインプットを得て、それらを使用しています。私の質問は、ユーザーにmov(a1、b2)のような入力を与えてほしいということです。入力を取得した後最初に:正しい形式であるかどうかを検証してから、関数でa1、b2値を使用します。これが私のコードの一部です:

    #include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <stdlib.h>


#include <iostream>
using namespace std;

#define SHMSZ     27

int main() {
    int shmid;
    key_t key;
    char *shm;
    string cmd;
    int check =1;

    key = 111;

    /*
     * Locate the segment.
     */
    if ((shmid = shmget(key, SHMSZ, 0666)) < 0) {
        perror("shmget");
        return 0;
    }

    /*
     * Now we attach the segment to our data space.
     */
    if ((shm = (char*) shmat(shmid, NULL, 0)) == (char *) -1) {
        perror("shmat");
        return 0;
    }

    cout << *shm << endl;
    while(check)
    {
        if(*shm == '*') //checks if other player finished the game
        {
            cout<<"End of the game. Thank you for playing." <<endl;
            *shm ='*';
            exit(1);
        }
        while(*shm == 'B')
        {

            cout << "Enter a move" << endl;
            cin >> cmd;

            if(cmd=="eog") // Finish the game
            {   
                cout<<"End of the game. Thank you for playing." <<endl;
                *shm ='*';
                exit(1);
            }
            *shm = 'W';
        }
    }

    return 0;
}
4

0 に答える 0