Snake and ladder game


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Snake and ladder game
# 1  
Old 07-23-2013
Snake and ladder game

Hi,

I am designing snake and ladder game in unix. I am writing my script in bash shell in Solaris version.
This game is designed by me for which I would like to give access to two players.
When these players execute the game, there should be communication between the three participants(game and two players).
The players should be prompted to have roll the dice for a random number.
Each player must be able to see the other players move.

Could someone please help me out on how to establish this sort of communication between players?

Thanks in advance,
ayarlaga
# 2  
Old 07-23-2013
Is this homework?
# 3  
Old 07-24-2013
I'd be inclined to use named pipes for this problem.

Use one NP for the game to receive commands from players and one for each player so they can receive game state.

Players would have to create a NP and pass it's path to the game using the game NP as they join.
# 4  
Old 07-25-2013
I sort of managed this arrangement ages ago to give some privileges to our 24hr operators to stop & start a service that was always being awkward and was a pain to do. I wrote a script and had it started in a loop at boot time. It would watch a file and respond to messages written there. The Ops then had a scripts of their own to write a message to the file and wait for a return.

All a bit clunky, but it worked.

Perhaps some logic like:-
  1. User1 starts the game, setting up the named pipe / temporary file and tails the file watching for messages from User2
  2. User2 joins the game and writes a confirmation to the temporary file and waits for messages from User1.
  3. User1 uses the value $RANDOM to determine odd or even and therefore who starts.
  4. User1 writes the message to the file and whomever is next to play is prompted, whilst the other waits.
  5. and the looping continues until there is a winner.

How are you planing to roll the dice? Might I suggest something like:-
Code:
rndm_num=$RANDOM                     # Only refer to this once.
((test_val=$rndm_num/6))             # Will truncate to integer
((test_val=$test_val*6))             # Will give nearest lower multiple of 6
((dice_val=$rndm_num-$test_val+1))   # Will give score between 1 & 6

Or, you could just start the game up and User1 could send the message "I won." and the games ends. It seems just as useful a way to pass the time as playing a game really. Mind you, the intellectual challenge is good practice. I wrote a soduko solver in ksh which was fun.




Robin
# 5  
Old 07-25-2013
Are you planning on drawing the board with ASCII art?

The snakes are quite challenging to get looking nice,
but the ladders look OK IMO, if you only go straight up with them:

Code:
+------------------------------
|    |    |    |    |    |    |   
| 25 | 26 | 27 | 28 | 29 | 30 |    
|    |    |  v |    | |-||    |    
|----+----+--#-+----+-|-|+----|
| /==========} |    | |-||    |    
| 24 | 23 | 22 | 20 | 20 | 19 |    
|    |    |    |    |    |    |
|----+----+----+----+----+----|

---------- Post updated at 07:46 AM ---------- Previous update was at 07:08 AM ----------

Or course if you have a terminal that supports unicode characters (e.g. uxterm) you can improve things a fair bit:

Code:
┌────┬────┬────┬────┬────┬────┐
│    │    │    │    │    │    │    
│ 25 │ 26 │ 27 │ 28 │ 29 │ 30 │    
│    │    │  v │    │ ╠═╣│    │    
├────┼────┼───┼────┼─╠═╣┼────┤
│  ══════════╝ │    │ ╠═╣│    │  
│ 24 │ 23 │ 22 │ 20 │ 20 │ 19 │    
│    │    │    │    │    │    │
├────┼────┼────┼────┼────┼────┤


Last edited by Chubler_XL; 07-25-2013 at 06:53 PM..
# 6  
Old 07-26-2013
@rdrtx1
This is not a homework.

Thank you so much for all your replies.
# 7  
Old 07-26-2013
Quote:
Originally Posted by rbatte1
... ... ...

How are you planing to roll the dice? Might I suggest something like:-
Code:
rndm_num=$RANDOM                     # Only refer to this once.
((test_val=$rndm_num/6))             # Will truncate to integer
((test_val=$test_val*6))             # Will give nearest lower multiple of 6
((dice_val=$rndm_num-$test_val+1))   # Will give score between 1 & 6

... ... ...

Robin
A slightly simpler way to do that is:
Code:
((dice_val = $RANDOM % 6 + 1))

This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

4 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Word ladder Problem

Perl - Script Rules In a Word Ladder: Players get a starting word and an ending word Starting and ending words must be the same length (PIG and HOG, or CAT and DOG) Players change one letter at a time, attempting to move from the starting word to the ending word Each intermediate step... (1 Reply)
Discussion started by: asak
1 Replies

2. What is on Your Mind?

Snake game challenge in UNIX

Hey Guys, I have made this basic snake game but it a little bit different from conventional snake game. Learned some basics of Unix. Hope you enjoy playing it. Please download and run on your machine and suggest any changes i can make. and let me know if someone could score 1000 points ;) ... (2 Replies)
Discussion started by: amit14august
2 Replies

3. Programming

Tetris Game in C++

Open Source Project: https://github.com/yongye/cpp Ported from the shell: Shell (0 Replies)
Discussion started by: complex.invoke
0 Replies

4. What is on Your Mind?

Game: Name this person

Simple rules... 1. Guess who it is, the first person to get it posts the next picture, post your guess as a reply to this thread. 2. Wait for the person who posted the picture to confirm that you are correct before posting a new picture. 3. If the person who posted the picture does not answer... (268 Replies)
Discussion started by: reborg
268 Replies
Login or Register to Ask a Question