16-06-2006, 05:47 AM | #21 | ||
|
<div class='quotetop'>QUOTE(guesst @ Jun 14 2006, 11:52 PM) [snapback]236864[/snapback]</div>
Quote:
This games will be very useful tomorrow at school, and will certainly make the 10 year olds also studying C++ with me have some fun...and ask the teachers how they were made again and again and again. Poor teachers. Oh, and are the games made in C, or C++? In C++, I had to add an extra library for getche for the game to work, and I also got the warning that int main(void) should return a value. Couldn't you have used void main instead of int main(void)? Mugwump is what I would like to be posted next. (meanwhile I have to try the other games) |
||
|
|
16-06-2006, 10:30 AM | #22 | ||
Join Date: Nov 2005
Location: ,
Posts: 201
|
Hi im kinda new to this, but you recommended this thread to me in one of the game threads, i think othello, so im about as nooby as a noob can possibly noob, so bear with me here. I reckon this would be the most amazing thing to be able to do, and to able to do it good would be awesome. But everyone has to start off somewhere, dont they? Anyways,
i have a few questions to ask you. First of all, in the tutorial they gave me in with the C++ program guides me through the "Hello World" program and ive already typed it in and compiled it and everything, but every time i try to run it I see the command prompty kinda box pop up for a fraction of a second then just disappear. And it does this everytime. So i went a bit further to find out about loops and put a neverending loop in, and it worked perfectly, the box came up and a neverending greeting to the world flashes down the screen. But i cant work out how to do the simple one line one. Any hints? Secondly, ive been through a couple of the programs you have posted here but every single one is rejected by the compiler, and of course, having not even been able to configure the Hello World program correctly, I cant work out what is wrong with them. On a smaller note could you try to explain the integers and floats a bit more coz i cant make head nor tail of them. Thanx |
||
|
|
16-06-2006, 11:46 AM | #23 | |||
|
<div class='quotetop'>QUOTE(#BlakhOle# @ Jun 16 2006, 01:30 PM) [snapback]237123[/snapback]</div>
Quote:
Code:
#include<stdio.h> #include<conio.h> void main() { clrscr(); printf("Hello BlakhOle! Do you like C++? I bet you don't :P "); getch(); } <div class='quotetop'>QUOTE(#BlakhOle# @ Jun 16 2006, 01:30 PM) [snapback]237123[/snapback]</div> Quote:
<div class='quotetop'>QUOTE(#BlakhOle# @ Jun 16 2006, 01:30 PM) [snapback]237123[/snapback]</div> Quote:
|
|||
|
|
16-06-2006, 04:46 PM | #24 | ||
Join Date: May 2005
Location: Aurora, United States
Posts: 606
|
So much to reply to! Warms my heart.
All of the programs posted here are in ANSI standard C, that is to say, not C++. If you want to eliminate some of the problems your complier is having with them, Abi79, save the files with a .C extention (not .cpp which is probably the default) and the compiler will (generally) compile it slightly differently. @#BlakhOle# I assume you're using DevCPP that I recomended at the start. Yes, "hello world" does come and go quickly. The problem is that when the program runs it opens a window, does the output, and closes the window before you get a chance to see what happened. There are two ways around this. One is to add the line Code:
**getch();getch(); PS, Albi79, your hello world is not technically C++ code. It's a kind of bastardized hybred. A proper C++ program would use streams like this: Code:
#include <iostream> ** int main(int argc, char **argv) ** { **** char c; ****** **** std::cout << "Hello BlakhOle! Do you like C++? I bet you don't :P" << std::endl; **** std::cin.get(); **** return (0); ** } Back to #BlakhOle#'s question, as for getting the programs here to work the first thing to do when you compile them if they don't run is look at the frame that pops up at the bottom. It will give you any warnings or errors that may be impeeding the execution of the program. If you can't make heads or tails of them tell us which program you're running and post the error here and we'll see if we can't help out. Ah, floats and ints. Well, there is a simple answer and a more complicated answer to that. Most books will take the complicated answer, explaining the inner workings of your computer and whatnot. I'll take the simple one. char, int, and long are all the same thing in that they can be used to store only whole numbers, that is to say no decimals, no fractions. 1, 2, 3, 100, 121, etc. The difference in them is that a char can only hold number less than 256 if unsigned or between -127 and 128 if signed. It's very limited but works for certian things very well. Ints can hold bigger numbers than a char. Use them for your regular counting. Longs are for when you may need a really big number. If you try to put a number that's too big into a variable that can't hold it all sorts of wonky thinks can happen. float and double are for holding numbers that may have decimal values. 1.1, 5.6, 10057.3, 3.14159, etc. Decimal points are a tricky thing for a computer to handle, so it's recomended that if you can do the job with whole numbers not to use floats as you're only going unnecessarly bog down your computer. Well folks, I have an eye appointment, so that's all the time I have for now. Maybe I'll do mugwump later, maybe not until tomorrow. If you have any more questions, you know where to find me. Ta |
||
|
|
16-06-2006, 08:22 PM | #25 | ||
Join Date: Oct 2005
Location: ,
Posts: 113
|
<div class='quotetop'>QUOTE(Abi79 @ Jun 16 2006, 01:47 AM) [snapback]237089[/snapback]</div>
Quote:
|
||
|
|
17-06-2006, 03:36 AM | #26 | ||
Join Date: Nov 2005
Location: ,
Posts: 201
|
Ok lets see whats worked here... first of all, C++ doesnt seem to like the getch(); command much, the compiler log comes up with
Quote:
The program you fixed from abi also worked pretty well, dunno how though. :P Apart from that all seems well, except from the fact i still dont know what everything means. Back to the HELP file i guess... PS @abi: Actually i dont hate C++, but i might like it a bit more if it was a bit more self explanatory :bleh: |
||
|
|
17-06-2006, 04:10 AM | #27 | ||
Join Date: May 2005
Location: Aurora, United States
Posts: 606
|
Got time for some quick responces. You never confirmed which compiler you're using. It would be helpful in the future to know what program you're working form.
As for getch() being no-go, okay, try getchar() or my personal favorate getche(). Getch is a non-standard function so it behaves differently, if it's there at all, between different compliers. Getchar is the standard version that all of my programs are written to be compatible with. However getche, unline getchar, doesn't wait until you hit the enter key before moving on. Getche will just take one character and run with it. void main () is possible on some compilers, but is extremely bad form like plix said. Always have int main() and to be completely compliant alway use return(0) at the end of the program to indicate a successful run. (Potentially you could exit with a non-zero value to pass information like error messages to external programs, but that's mostly a Unix thing.) So, to sum up:
Mugwump This is a good game to show the difference between ints and floats that we were just talking about above. In 101 BASIC games and it's successor there were numerious hide and seek games played on a grid where by various means the player was given hints as where to find whatever ridiculous creature they were hunting for. Of all of them Mugwump was perhaps the most intersting of them. Instead of directional hints this game gives the distance to your targets. In an improvement over the original this one sorts the resultant distances so you don't know which ones are for which any more. Also, there's a timing loop that simulates a distance reading machine of some sorts with the output. Check it out. Code:
/* Mugwump Hunt * by Joseph Larson 2005 * inspired by a BASIC game by an unknown author * as found in 'BASIC Computer Games' edited by David H. Ahl (c) 1978 */ #include <math.h> #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <time.h> #define dist(a,b) sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y)) #define NUM 5 #define SIZE 20 typedef struct { **int x, y; } COORD; int greater (double *a, double *b) {return (*a > *b);} void intro (void) { **printf ("Mugwump Hunt\n-----------\n" **"You are hunting Mugwumps using a state of the art radar system. There are\n" **"%d mugwumps hidden hiding in a %d,%d grid. After every guess you will be\n" **"told how close the remaining Mugwumps are to your guess.\n" **"Input the your guess by typing the x and y location seperated by a comma\n" **"(IE \"5,5\" or \"3,10\")\n" **"(Mugwumps only hide whole number locations.)\n\n", **NUM, SIZE, SIZE); } void hunt (void) { **int c, turns, left, dsize; **COORD h[NUM], input; **double d[NUM]; **time_t st, cur, dit; **for (c = 0; c < NUM; c++) { ****h[c].x = rand() % SIZE + 1; ****h[c].y = rand() % SIZE + 1; **} **printf ("The Mugwumps are hiding."); **turns = 0; **left = NUM; **while (left > 0) { ****turns ++; ****printf ("\n%d Mugwumps left.\n", left); ** input.x = input.y = -1; ****do { ******if (input.x != -1 && input.y != -1) ********printf ("X and Y values must be between 1 and %d", SIZE); ********printf ("\nWhere do you want to search? X,Y : "); ********scanf ("%d %*c %d", &input.x, &input.y); ****} while (input.x < 1 || input.x > SIZE || input.y < 1 || input.y > SIZE); ****dsize = 0; ****printf ("Mugwump Radar Searching from %d,%d...", input.x, input.y); ****for (c = 0; c < NUM; c++) ******if (h[c].x == input.x && h[c].y == input.y) { ********printf ("\nMugwump found!"); ********h[c].x = h[c].y = -1; ********left--; ******} else if (h[c].x > 0) d[dsize++] = dist(h[c], input); ****if (dsize) { ******qsort (d, dsize, sizeof(double), greater); ******time (&st); dit = st; ******for (c = 0; c < dsize; c++) { ********do { **********time (&cur); **********if (difftime (cur, dit) > 0.2) {putchar ('.'); time (&dit);} ********} while (difftime (cur, st) < d[c] / 2); ********printf ("\nMugwump at distance %.2f", d[c]); ******} ****} **} **printf ("Congratulation! All Mugwumps found in %d turns!", turns); } int again (void) { **char input; **printf ("\nDo you want to play again? (y/n) "); **while (!isalpha (input = getchar())); **if (tolower (input) != 'n') return 1; **return 0; } int main (void) { **intro(); **srand (time (NULL)); **do {hunt();} while (again ()); **exit (0); } If you change the constants NUM and SIZE at the start of the program you can easily adjust the difficulty of the game. Enjoy! And the winner for best supporting gaffer is...
|
||
|
|
18-06-2006, 03:14 PM | #28 | ||
|
<div class='quotetop'>QUOTE(#BlakhOle# @ Jun 17 2006, 06:36 AM) [snapback]237264[/snapback]</div>
Quote:
As for guesst, Hammurabi, Hammurabi! |
||
|
|
19-06-2006, 03:44 PM | #29 | ||
Join Date: May 2005
Location: Aurora, United States
Posts: 606
|
Hammurabi
Not feeling like typing much today. But your wish is my command. Once again this is a BASIC program that got the C treatment. Follow the link if you want to know more. .:EDIT:. I'm feeling like typing more now. While I realize no one is going to take the time to read this, I'm posting it any ways. Hammurabi borrows it's name from the Babylonia ruler who is famous for setting up a standard of laws and punishments. By "setting up a standard" I mean he literally built an 8 foot tall black stone monument, clearly meant to be placed in the center of town. There was no excuse for not knowing the laws in Hammurabi's reign, because they were before you day and night. In this way it was believed that Hammurabi kept order in his town. Now it's your chance. See if you can expand your land and grow your population in a 20 year reign as king in this exciting simulation game. Code:
/* Hammurabi * by Joseph Larson * based on a BASIC program written by David Ahl * as found in 'BASIC Computer Games' edited by David H Ahl (c) 1978 * inspired by a Focal program from an unknown author */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define SHORT_LAND_MSG printf ("Hammurabi, think again."\ **" You own only %d acres. Now then,\n", acres) #define SHORT_GRAIN_MSG printf ("Hammurabi, think again."\ **" You have only %d bushels of grain. Now then,\n", grain) int pop, acres, grain, starved, born, yield, rats, food, year; void resign (void) { **printf ("Hammurabi, I can not do what you wish." ****" Get yourself another steward!\n"); **exit (0); } void endgame (int rank) { **switch (rank) { ****case 0: ****printf ("Due to this extreme mismanagement you have not only been" ******" impeached\nand thrown out of office but you have been also declared" ******" a national fink!\n"); ****break; ****case 1: ****printf ("You heavy handed performance smacks of Nero and Ivan IV." ******" The people\n(remaining) find you an unpleasant ruler and frankly" ******" hate your guts!!\n"); ****break; ****case 2: ****printf ("Your performance could have been somewhat better but really" ******" wasn't\ntoo bad at all. %d people dearly would like to see you" ******" assassinated\nbut we all have our trivial problems.\n" ******, pop * (rand () % 80) / 100); ****break; ****default: ****printf ("A fantastic performance!!! Charlemagne, Disraeli, and Jefferson\n" ******"combined could not have done better!!\n"); **} } void report (void) { **printf ("\n\nHammurabi, I beg to report to you;\n\n" ****"In year %d, %d people starved, %d came to the city.\n" ****, year, starved, born); **if (rand() < (RAND_MAX / 100 * 15) && year > 1) { ****printf ("A horrible plague struck! Half the people died.\n"); ****pop /= 2; **} **printf ("Population is now %d.\n" ****"The city now owns %d acres.\n" ****"You harvested %d bushels per acre.\n" ****"Rats ate %d bushels.\n" ****"You now have %d bushels in store.\n\n", ****pop, acres, yield, rats, grain); } void buysell (void) { **int input, price; **price = rand() % 10 + 17; **printf ("Land is trading at %d bushels per acre.\n", price); **printf ("How many acres do you wish to buy? "); **scanf ("%d", &input); **while (price * input > grain) { ******SHORT_GRAIN_MSG; ******printf ("how many do you wish to buy? "); ******scanf ("%d", &input); **} **if (input < 0) resign(); **if (input) { ****acres += input; ****grain -= price * input; **} else { ****printf ("How man acres do you wish to sell? "); ****scanf ("%d", &input); ****while (input > acres) { ******SHORT_LAND_MSG; ******printf ("how many do you wish to buy? "); ******scanf ("%d", &input); ****} ****if (input < 0) resign (); ****acres -= input; ****grain += input * price; **} } void feed (void) { **do { ****printf ("How many bushels do you wish to feed your people? "); ****scanf ("%d", &food); ****if (food < 0) resign (); ****if (food > grain) SHORT_GRAIN_MSG; **} while (food > grain); } void farm (void) { **int input, v; **do { ****v = 1; ****printf ("How many acres do you wish to plant with seed? "); ****scanf ("%d", &input); ****if (input < 0) resign (); ****else if (input > acres) {SHORT_LAND_MSG; v = 0;} ****else if (input / 2 > grain) {SHORT_GRAIN_MSG; v = 0;} ****else if (input > 10 * pop) { ******printf ("But you only have %d people to tend the fields! Now then,\n" ******, pop); ******v = 0; ****} **} while (!v); **grain -= input / 2; **yield = rand () % 5 + 1; **rats = rand () % 5 + 1; **rats = (rats % 2) ? grain / rats : 0; **grain += input * yield - rats; } int main (void) { **int cstarved = 0; **int cps = 0; **srand (time (NULL)); **printf ("Hammurabi\n\n" **"Try your hand at governing ancient summeria for a ten-year term of office."); **pop = 100; **grain = 2800; **yield = 3; **rats = 200; **acres = 1000; **born = 5; **for (year = 1; year <= 10 && starved < pop * 45 / 100; year ++){ ****report (); ****buysell (); ****feed (); ****farm (); ****born = ((rand () % 5 + 1) * (20 * acres + grain) / pop / 100) + 1; ****starved = (pop < food / 20) ? 0 : pop - food / 20; ****pop += born - starved; ****cstarved += starved; ****cps += starved * 100 / pop; **} **if (starved >= pop * 45 / 100) { ****printf ("\nYou starved %d people in one year!!!\n", starved); ****endgame (0); **} else { ****year--; ****report (); ****cps /= 10; ****printf ("In your 10-year term of office %d%% of the people died per year\n" ******"on the average, IE a total of %d people died!\n", cps, cstarved); ****acres /= pop; ****printf ("You started with 10 acres per person and ended with %d acres per\n" ******"person.\n\n", acres); ****endgame ((cps<34 && acres>6)+(cps<11 && acres>8)+(cps<4 && acres>9)); **} **exit (0); } Keep 'em comming
|
||
|
|
19-06-2006, 05:38 PM | #30 | ||
Join Date: Feb 2005
Location: Leeds, England
Posts: 2,166
|
Oooh, Awari! My dad has a beautiful Awari board he got when he was in Africa - 's a great game.
|
||
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Happy Birthday Guesst | Japo | Birthdays & Celebrations | 8 | 06-07-2007 09:50 AM |
Happy Birthday, Guesst | Shrek | Blah, blah, blah... | 10 | 08-07-2006 09:31 AM |
Thread Tools | |
Display Modes | |
|
|
||
  |