From d76770c2a56bcc5cb795661d76e24f6116f26154 Mon Sep 17 00:00:00 2001 From: Crystal Date: Thu, 22 Feb 2024 19:09:31 +0100 Subject: Add stuff --- src/org/blog/c/a.out | Bin 0 -> 9976 bytes src/org/blog/c/game.c | 126 ++++++++++++++++++++++++++++++++++++++++++++++++ src/org/blog/c/game.org | 64 +++++++++++++++++++++--- 3 files changed, 183 insertions(+), 7 deletions(-) create mode 100755 src/org/blog/c/a.out create mode 100644 src/org/blog/c/game.c (limited to 'src/org/blog') diff --git a/src/org/blog/c/a.out b/src/org/blog/c/a.out new file mode 100755 index 0000000..073e240 Binary files /dev/null and b/src/org/blog/c/a.out differ diff --git a/src/org/blog/c/game.c b/src/org/blog/c/game.c new file mode 100644 index 0000000..02116e7 --- /dev/null +++ b/src/org/blog/c/game.c @@ -0,0 +1,126 @@ +#include +#include +int main(int argc, char *argv[]) { + int n=5,m=5; + char input,map[50][50]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + map[i][j] = '-'; + } + } + int stop=0,i=0,moves=0,score=0,pos[2] = {n/2,m/2}; + int bonus[2]; + int trap[2] ; + int death[2]; + map[pos[0]][pos[1]] = '+'; + do{ + bonus[0] = arc4random_uniform(n); bonus[1] = arc4random_uniform(m); + trap[0] = arc4random_uniform(n); trap[1] = arc4random_uniform(m); + death[0] = arc4random_uniform(n); death[1] = arc4random_uniform(m); + }while((bonus[0] == trap[0] && bonus[1] == trap[1]) || (bonus[0] == death[0] && bonus[1] == death[1]) || (trap[0] == death[0] && trap[1] == death[1]) || (bonus[0] == pos[0] && bonus[1] == pos[1]) || (trap[0] == pos[0] && trap[1] == pos[1]) || (death[0] == pos[0] && death[1] == pos[1])); + map[bonus[0]][bonus[1]] = 'B'; + map[trap[0]][trap[1]] = 'T'; + map[death[0]][death[1]] = 'D'; + do{ + printf("Map:\n"); + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + printf("%c ", map[i][j]); + } + printf("\n"); + } + printf("Score: %d\n", score); + printf("Moves: %d\n", moves); + printf("Enter a direction (w,a,s,d) or c to quit: "); + scanf(" %c", &input); +// pos[0] updown pos[1] lr + if (input == 'w') { + printf("Moving up\n"); + map[pos[0]][pos[1]] = '-'; + if (pos[0] == 0) { + pos[0] = n-1; + } + else { + pos[0]--; + } + } else if (input == 'a') { + printf("Moving left\n"); + map[pos[0]][pos[1]] = '-'; + if (pos[1] == 0) { + pos[1] = m-1; + } + else { + pos[1]--; + } + } else if (input == 's') { + + printf("Moving down\n"); + map[pos[0]][pos[1]] = '-'; + if (pos[0] == n-1) { + pos[0] = 0; + } + else { + pos[0]++; + } + } else if (input == 'd') { + printf("Moving right\n"); + map[pos[0]][pos[1]] = '-'; + if (pos[1] == m-1) { + pos[1] = 0; + } + else { + pos[1]++; + } + } else if (input == 'c') { + printf("Quitting\n"); + } else { + printf("Invalid input\n"); + } + map[pos[0]][pos[1]] = '+'; + if (pos[0] == bonus[0] && pos[1] == bonus[1]) { + score++; + do{ + bonus[0]= arc4random_uniform(n); + bonus[1]= arc4random_uniform(m); + }while((bonus[0] == trap[0] && bonus[1] == trap[1]) || (bonus[0] == death[0] && bonus[1] == death[1]) || (bonus[0] == pos[0] && bonus[1] == pos[1])); + } + if (pos[0] == trap[0] && pos[1] == trap[1]) { + score--; + do{ + trap[0]= arc4random_uniform(n); + trap[1]= arc4random_uniform(m); + }while((trap[0] == bonus[0] && trap[1] == bonus[1]) || (trap[0] == death[0] && trap[1] == death[1]) || (trap[0] == pos[0] && trap[1] == pos[1])); + } + if (pos[0] == death[0] && pos[1] == death[1]) { + score = 0; + do{ + death[0]= arc4random_uniform(n); + death[1]= arc4random_uniform(m); + }while((death[0] == bonus[0] && death[1] == bonus[1]) || (death[0] == trap[0] && death[1] == trap[1]) || (death[0] == pos[0] && death[1] == pos[1])); + } + if (score % 3 == 0 && score != 0 && stop == 0) { + map[death[0]][death[1]] = '-'; + do{ + death[0]= arc4random_uniform(n); + death[1]= arc4random_uniform(m); + }while((death[0] == bonus[0] && death[1] == bonus[1]) || (death[0] == trap[0] && death[1] == trap[1]) || (death[0] == pos[0] && death[1] == pos[1])); + stop = 1; + } + else if (score % 3 != 0) { + stop = 0; + } + if (moves % 5 == 0 && moves != 0) { + do{ + map[trap[0]][trap[1]] = '-'; + trap[0]= arc4random_uniform(n); + trap[1]= arc4random_uniform(m); + }while((trap[0] == bonus[0] && trap[1] == bonus[1]) || (trap[0] == death[0] && trap[1] == death[1]) || (trap[0] == pos[0] && trap[1] == pos[1])); + + } + map[bonus[0]][bonus[1]] = 'B'; + map[trap[0]][trap[1]] = 'T'; + map[death[0]][death[1]] = 'D'; + moves++; + }while(input != 'c'); + return 0; +} diff --git a/src/org/blog/c/game.org b/src/org/blog/c/game.org index 3ed154e..1f618e4 100644 --- a/src/org/blog/c/game.org +++ b/src/org/blog/c/game.org @@ -150,17 +150,19 @@ int main(int argc, char *argv[]) { #+END_SRC - Let's go step by step and see what we can fix or improve, to start off, line 4 to 10 can be reduced to a single line (which will be beneficial later too) - #+BEGIN_SRC c -n 4 -char input,map[5][5] = {'-'}; - #+END_SRC - Much better...but can be even more better, why stop at 5 when we can give the choice to the user !! + Let's go step by step and see what we can fix or improve, to start off, line 4 to 10 can be reduced to 7 or 8 lines (which will be beneficial later too) #+BEGIN_SRC c -n 4 int n=5,m=5; -char input,map[n][m]={'-'}; +char input,map[50][50]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + map[i][j] = '-'; + } + } + #+END_SRC - For now at least, n and m are hardcoded to 5, but this will change later. + For now at least, n and m are hardcoded to 5, but this will change later. And I picked 50x50 as a max size because why not Of course we have the usual inits on line 11, though since we are using variables instead of hardcoding 5, we will have to find the center by ourselves #+BEGIN_SRC c -n 11 @@ -239,3 +241,51 @@ After that we have some logic which should also be changed to account for the n #+END_SRC What this achieves is the "teleportation effect" whenever you are at the border of the screen! + + +Now we fix things from line 80 to the end of the program, aka replacing ever occurrence of 5 with n or m +#+BEGIN_SRC c -n 80 + if (pos[0] == bonus[0] && pos[1] == bonus[1]) { + score++; + do{ + bonus[0]= arc4random_uniform(n); + bonus[1]= arc4random_uniform(m); + }while((bonus[0] == trap[0] && bonus[1] == trap[1]) || (bonus[0] == death[0] && bonus[1] == death[1]) || (bonus[0] == pos[0] && bonus[1] == pos[1])); + } + if (pos[0] == trap[0] && pos[1] == trap[1]) { + score--; + do{ + trap[0]= arc4random_uniform(n); + trap[1]= arc4random_uniform(m); + }while((trap[0] == bonus[0] && trap[1] == bonus[1]) || (trap[0] == death[0] && trap[1] == death[1]) || (trap[0] == pos[0] && trap[1] == pos[1])); + } + if (pos[0] == death[0] && pos[1] == death[1]) { + score = 0; + do{ + death[0]= arc4random_uniform(n); + death[1]= arc4random_uniform(m); + }while((death[0] == bonus[0] && death[1] == bonus[1]) || (death[0] == trap[0] && death[1] == trap[1]) || (death[0] == pos[0] && death[1] == pos[1])); + } + if (score % 3 == 0 && score != 0 && stop == 0) { + map[death[0]][death[1]] = '-'; + do{ + death[0]= arc4random_uniform(n); + death[1]= arc4random_uniform(m); + }while((death[0] == bonus[0] && death[1] == bonus[1]) || (death[0] == trap[0] && death[1] == trap[1]) || (death[0] == pos[0] && death[1] == pos[1])); + stop = 1; + } + else if (score % 3 != 0) { + stop = 0; + } + if (moves % 5 == 0 && moves != 0) { + do{ + map[trap[0]][trap[1]] = '-'; + trap[0]= arc4random_uniform(n); + trap[1]= arc4random_uniform(m); + }while((trap[0] == bonus[0] && trap[1] == bonus[1]) || (trap[0] == death[0] && trap[1] == death[1]) || (trap[0] == pos[0] && trap[1] == pos[1])); + + } +#+END_SRC + + +Aaaaand this should be it -- cgit 1.4.1-2-gfad0