Sign in to follow this  
JonathanCCC

text based game tricks

Recommended Posts

I have 2 questions, first, does anyone know of any good free open source text based games written in vanilla C that I can download and learn
some tips from? since for the moment i'm confining myself to console stuff and learning C inside and out before I go onto SDL.

EDIT: something like a large open source role playing game or "MUD" game would be great.



secondly, at the moment in my games, as an artifical way of making the program wait, for example, to simulate a poker opponent thinking, even though the computer has of course done the calculations in half a second, I do this for example:

#define wait 2000000000

int i = 0;
while (i < wait) {i++; if (i == 1) printf("\nComputer is thinking"); if (i == 100000000) printf(".");if (i == 300000000) printf(".");if (i == 600000000) printf(".");if (i == 900000000) printf(".\n"); }

is this bad and is there a better way?

thanks

Share this post


Link to post
Share on other sites
The better way would be to set up a timer, since each computer would process the while loop at various speeds depending on the computer specs, particularly the CPU in this case. This could be incorporated into the game update loop.

For example (and this is pseudo-code):
[code]
timer myTimer;
while(gameIsRunning)
{
if(isPlayerTurn())
{
doPlayerTurn();
}
if(isComputerTurn())
{
print("Computer is thinking");
myTimer.start(); // Starts the timer "ticking"
for(int i = 0; i < 3; i++) // 3 dots
{
while(myTimer.elapsedTime() < 0.5){} // Just waiting for our timer to reach half a second
print(".");
myTimer.reset(); // Starts timer over
}
}
}
[/code]

This gives the computer a total "thinking" time of roughly 1.5 seconds. It will vary depending on how fast it executes the rest of the code, but it will be [i]at least[/i] 1.5 seconds (0.5 each wait, with 3 total waits = 0.5 * 3).

Granted this is just a simple example, you would have a lot more code to handle things.

Oh, and you can use the code tags for your code to make them more reader friendly. [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

Share this post


Link to post
Share on other sites
Ide recommend fist making a rock paper scissors game ([url="http://rosettacode.org/wiki/Rock-paper-scissors"]example code here[/url], ITS IN EVERY LANGUAGE U COULD IMAGINE :D) then you can move on...
first thing is to make yourself a basic game engine:
[CODE]
void main()
{
int continue = 1;
while(continue ) // game loop
{
//check for user input
// run AI
//update entities (things in the game)
//draw text
//play sounds
}
}
[/CODE]

and fill it in

maybe look through [url="http://cplus.about.com/od/learningc/ss/programming-games-in-c-tutorial-one.htm"]this[/url], ive had a brief read, I think It will help you.

Share this post


Link to post
Share on other sites
Depends what you mean by text based, most people tend to start with console programs for text based. Problem with consoles is that they're blocking applications, they don't poll you for input, games like MUDs only work because they're standalone servers that can communicate with you. It's obviously possible to make a text based game in a win32 window or using SDL or something but that comes down to what you want to do.

It's entirely possible to make a text based console game, but you wouldn't have any sort of "timing" it'd just have to be back and forth, issue command, receive result.

Share this post


Link to post
Share on other sites
[quote name='JonathanCCC' timestamp='1334104385' post='4930050']
yes, that text based game tutorial in C does look good. Thanks for that, and thanks dragonsoulj for the better waiting code!
[/quote]
hmm, well I supose mine was more a real time engine, not a turn based

Share this post


Link to post
Share on other sites
[quote name='falconmick' timestamp='1334114690' post='4930096']
hmm, well I supose mine was more a real time engine, not a turn based
[/quote]
I was merely giving him a timespan across every system that will give similar results. I've had the issue of not thinking of how fast a computer runs a program.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this