Jump to content
  • Advertisement
Sign in to follow this  
JonathanCCC

text based game tricks

This topic is 2441 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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

Share this post


Link to post
Share on other sites
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.

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

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!