Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Use of LINUX inter-process communication (IPC) to implement a game

  1. Sep 28, 2006 #1
    In this assignment, you are required to use LINUX inter-process communication (IPC) to
    implement the game of “Rock, Paper, and Scissors”. The rule of this game need not be further
    explained (just see the picture below). In each round, if two players choose the same weapon, the
    round is a still a tie and the tie must be broken.
    You are asked to write a player program. When a player enters the system, it should check if
    another player is already waiting there. If so, the new player will challenge the existing player.
    They will play a best-of-five series to decide the winner. A player may also forfeit the series.
    Then the loser leaves and the winner will wait for another challenger. If multiple players want to
    challenge an existing player, they will join on a first-come first-serve basis.
    To implement this, you need to use the message-passing interface in LINUX. The first player
    should create a message queue (with a well-known key). A new arriving player should get the
    queue identifier to communicate with the existing player. You need to make sure only two players
    are playing the game at one time. The choices of weapon should be exchanged between two
    players in a best-of-five series. The text terminals should display the progress of the series. In
    addition, the message queue should be destroyed when the last player in the system leaves.

    it makes me feel comfortable if i discuss my approach with someone as I proceed. I dont know anybody in the class, so I am going to discuss my assignment here

    alright, let me sum up my approach and then you guys can tell me if you find any loopholes:
    The first player enters the game, it does not see anybody in the queue, then it adds itself to the queue and waits for the second person.
    The second person comes and sees the first person in the queue, the second person is acting like a guest now and the first person is acting like a host.
    Doubt: Am I really supposed to put the "host" in the queue?

    In the meanwhile the third person tries to join the game, but then it just adds itself to the queue and waits for one of them to exit/lose the game.
    Doubt: How can you determine how many people are in the queue? I mean what is the command?

    now the actual game, the guest sends the message to the host telling it what tool it has picked etc. The assumption I am making here is that the client does not remove itself from the queue right after making the connection, it just waits there and picks tool for itself and sends the message to the host.
    Doubt: How do I delete the queue place associated with this guest? msgctl makes no sense to me! Could somebody explain that to me a little bit?
  2. jcsd
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Can you offer guidance or do you also need help?
Draft saved Draft deleted