[Linuxcprogramming] senet.c - returning a ptr to a function

Nick Croft nicko at acay.com.au
Tue Jul 10 23:51:49 UTC 2001


Hi, 
I'm learning C from one of those books that promise a lot in 21 days. One 
thing I've learnt from this series is that there's plenty of help getting 
started, but the exercises and advice thin out a bit when the going gets tough.

To consolidate my learning I've set myself the goal of writing an ascii game 
based on a simple board game - Senet. Instead of sticks this game uses 4 
throwing-sticks. Landing one way up gives 0, the other way up gives 1. The four 
sticks are totalled, with 4x0 counting as a six. The character of the game 
derives from the resulting chances, 2 most often, then 1 or 3, then 4 or 6.

Try as I might, I can't turn the function `sticks' in the following inelegant 
piece into a for-loop with an array. I keep getting the address returned.
Unfortunately chapter 14 of the 21 day book has no answers to the few 
exercises on returning pointers to an array.

______________________________________________

senet.c

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int sticks (void);
int x;

int main ()
{
   x = sticks();
   printf("\nThrow value: %d. \n", x);
   return 0;
}


int sticks (void)
{
   int throw1, throw2, throw3, throw4, total;

   srand(time(NULL));
				               
   throw1 = (int) (2.0*rand()/(RAND_MAX+1.0));;
   throw2 = (int) (2.0*rand()/(RAND_MAX+1.0));;
   throw3 = (int) (2.0*rand()/(RAND_MAX+1.0));;
   throw4 = (int) (2.0*rand()/(RAND_MAX+1.0));;

   total = throw1 + throw2 + throw3 + throw4;
														                 
   if (total == 0) { total = 6; 
	}
	
	return total; 
} 
___________________________________________________

I'd love to have an nice for-loop and an array instead of the throw1-2-3-4
business.

Sorry for the simplicity, but it's where I'm at. Maybe while there's not 
much traffic on the list you might care to help.

Thanks,

Nick




More information about the linuxCprogramming mailing list