text based game tricks

Started by
5 comments, last by Dragonsoulj 12 years ago
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
Advertisement
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):

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
}
}
}


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 at least 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. smile.png
Ide recommend fist making a rock paper scissors game (example code here, ITS IN EVERY LANGUAGE U COULD IMAGINE :D) then you can move on...
first thing is to make yourself a basic game engine:

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
}
}


and fill it in

maybe look through this, ive had a brief read, I think It will help you.
yes, that text based game tutorial in C does look good. Thanks for that, and thanks dragonsoulj for the better waiting code!
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.

yes, that text based game tutorial in C does look good. Thanks for that, and thanks dragonsoulj for the better waiting code!

hmm, well I supose mine was more a real time engine, not a turn based

hmm, well I supose mine was more a real time engine, not a turn based

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.

This topic is closed to new replies.

Advertisement