Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <fcntl.h>
  5. #include <string.h>
  6.  
  7. void array(char **table , int dimension);
  8. void food();
  9. char move();
  10. void random(char **table, struct snake new_snake); //int *randomx, int *randomy
  11. void clear_screen();
  12. void eat_food();
  13. //void gotoxy()
  14.  
  15. typedef struct snake
  16. {
  17. direction_t *head;
  18. direction_t *tail;
  19.  
  20.  
  21.  
  22. }snake_t;
  23.  
  24.  
  25.  
  26. typedef struct direction
  27. {
  28. int x;
  29. int y;
  30.  
  31.  
  32. }direction_t;
  33.  
  34. int main(int argc, char *argv[])
  35.  
  36. { int i,j;
  37. int score=0;
  38.  
  39. if(argc!=2)
  40. {
  41. return 1;
  42. }
  43. else
  44. {
  45.  
  46.  
  47. if(argv[1] == NULL)
  48. {
  49. return 1;
  50. }
  51. else
  52. {
  53. int size = atoi(argv[1]); //converting argument to integer
  54.  
  55. size += 2; //adding 2 extra lines/colums to array (?)
  56. char **ground = (char**)malloc(size * sizeof(char*));
  57. free(**ground);
  58. void array(char **ground, int size);
  59. }
  60.  
  61.  
  62. // return 0;
  63. int length=0;
  64. char keys[NUM_KEYS] = DEFAULT_KEYS;
  65. do
  66. {
  67. keypress = (char)getchar ();
  68.  
  69. /* Move the snake one position. */
  70. move (&snake, keys, keypress);
  71.  
  72. /* keeps cursor flashing in one place instead of following snake */
  73. gotoxy (1, 1);
  74.  
  75. if (collision (&snake, &screen))
  76. {
  77. keypress = keys[QUIT];
  78. break;
  79. }
  80. else if (collide_object (&snake, &screen, food))
  81. {
  82.  
  83. show_score (&screen);
  84. }
  85.  
  86.  
  87.  
  88. while (keypress != keys[QUIT]);
  89. {
  90. show_score (&screen);
  91.  
  92. gotoxy (32, 6);
  93. textcolor (GREEN);
  94. printf ("-G A M E O V E R-");
  95.  
  96. gotoxy (32, 9);
  97. textcolor (GREEN);
  98. printf ("Another Game (y/n)? ");
  99. }
  100. }
  101. do
  102. {
  103. keypress = getchar ();
  104. }
  105. while ((keypress != 'y') && (keypress != 'n'));
  106.  
  107. while (keypress == 'y');
  108.  
  109. clrscr ();
  110.  
  111. void food1();
  112.  
  113. }
  114. return 0;
  115. }
  116. return 0;
  117. }
  118. }
  119.  
  120. void body(struct snake s)
  121. {
  122. (char*) s.head->x = rand()%size-1;
  123. (char*) s.head->y = rand()%size-1;
  124. if ((char*) s.head->x>0 && (char*) head->y>0)
  125. {
  126.  
  127.  
  128. if(((char*) s.head->x) > 0 && ((char*) s.head->y)<size-1)
  129. {
  130. printf("@", s.head);
  131. move(snake_t *snake, char keys[], char key);
  132. }
  133. else
  134. {
  135. return 1;
  136. }
  137. }
  138. else
  139. {
  140. return 1;
  141. }
  142.  
  143. }
  144. void food(**table)
  145. {
  146. direction_t food;
  147. int size = atoi(argv[1]);
  148. food.x = rand()%(size-2);
  149. food.y = rand()%(size-2);
  150.  
  151.  
  152. if (food.x >0 && food.y>0)
  153. {
  154. if(food.x < size && food.y < size)
  155. {
  156. char table[food.x][food.y] = 'X';
  157. }
  158. }
  159. else
  160. {
  161. return 1;
  162. }
  163.  
  164.  
  165. }
  166.  
  167.  
  168. void eat_food() //GIANNH TO FOOD
  169. {
  170.  
  171. direction_t food, head;
  172. char tail = '*';
  173. food.x = rand()%(size-2);
  174. food.y = rand()%(size-2);
  175. time_t a;
  176. a=time(0);
  177. srand(a);
  178.  
  179. if(head.x == food.x && head.y == food.y)
  180. {
  181. char move(snake_t *snake, char keys[], char key);
  182. table[food.x][food.y] = '*';
  183. printf("%c", table[food.x][food.y] );
  184. void array(char **table, int dimension);
  185.  
  186.  
  187.  
  188. }
  189. else
  190. {
  191.  
  192.  
  193. }
  194.  
  195. }
  196.  
  197. void random(char **table, struct snake new_snake ) //(char **table, int *randomX, int *randomY)
  198. {
  199.  
  200. new_snake.head = (snake_t*)malloc(sizeof(snake_t));
  201.  
  202.  
  203. int i,j;
  204. int empty_cell;
  205. int randomX_void, randomY_void;
  206.  
  207. do
  208. {
  209. randomX_void=rand()%size-1;//generate a random number from 0 to size -1
  210. randomY_void=rand()%size-1;
  211.  
  212. for(i=0; i<size-1; i++){
  213. for(j=0; j<size-1; j++){
  214. if(table[randomX_void][randomY_void] == 'X')
  215. {
  216. eat_food();
  217. score++;
  218. emptyCell=1;
  219. head->x = randomX_void;//store the result in the address of the randomX
  220. head->y = randomY_void;
  221. }
  222.  
  223. else if(table[randomX_void][randomY_void]== '*')
  224. return 1;
  225. else if (table[randomX_void][randomY_void]== '-' )
  226. return 1;
  227. else if(table[randomX_void][randomY_void]== '|')
  228. return 1;
  229. else
  230. emptyCell=0;
  231. }
  232. }
  233.  
  234.  
  235.  
  236. } while (emptyCell!=1);
  237.  
  238.  
  239. }
  240.  
  241.  
  242.  
  243.  
  244.  
  245. char move(snake_t *snake, char keys[], char key)
  246. {
  247. int i;
  248. int flags;
  249. char key[4];
  250.  
  251. direction_t prev = snake->dir;
  252.  
  253. if (key == keys[D])
  254. {
  255. snake->dir = RIGHT;
  256. }
  257. else if (key == keys[A])
  258. {
  259. snake->dir = LEFT;
  260. }
  261. else if (key == keys[W])
  262. {
  263. snake->dir = UP;
  264. }
  265. else if (key == keys[S])
  266. {
  267. snake->dir = DOWN;
  268. }
  269. else if (key == keys[LEFT_TURN])
  270. {
  271. switch (prev)
  272. {
  273. case LEFT:
  274. snake->dir = DOWN; //S?
  275. break;
  276.  
  277. case RIGHT:
  278. snake->dir = UP; //W?
  279. break;
  280.  
  281. case UP:
  282. snake->dir = LEFT; //A?
  283. break;
  284.  
  285. case DOWN:
  286. snake->dir = RIGHT; //P?
  287. break;
  288.  
  289. default:
  290. break;
  291. }
  292. }
  293. else if (key == keys[RIGHT_TURN])
  294. {
  295. switch (prev)
  296. {
  297. case LEFT:
  298. snake->dir = UP;//W? RWTAME GIANNH
  299. break;
  300.  
  301. case RIGHT:
  302. snake->dir = DOWN;//S?
  303. break;
  304.  
  305. case UP:
  306. snake->dir = RIGHT;//P?
  307. break;
  308.  
  309. case DOWN:
  310. snake->dir = LEFT;//A?
  311. break;
  312.  
  313. default:
  314. break;
  315. }
  316. }
  317.  
  318. switch (snake->dir) //RVTAME GIANNH
  319. {
  320. case LEFT:
  321. snake->body[snake->length].row = snake->body[snake->length - 1].row;
  322. snake->body[snake->length].col = snake->body[snake->length - 1].col - 1;
  323. break;
  324.  
  325. case RIGHT:
  326. snake->body[snake->length].row = snake->body[snake->length - 1].row;
  327. snake->body[snake->length].col = snake->body[snake->length - 1].col + 1;
  328. break;
  329.  
  330. case UP:
  331. snake->body[snake->length].row = snake->body[snake->length - 1].row - 1;
  332. snake->body[snake->length.col = snake->body[snake->length - 1].col;
  333. break;
  334.  
  335. case DOWN:
  336. snake->body[snake->length].row = snake->body[snake->length - 1].row + 1;
  337. snake->body[snake->length.col = snake->body[snake->length - 1].col;
  338. break;
  339.  
  340. default:
  341. /* NOP */
  342. break;
  343. }
  344. flags = fcntl(STDIN_FILENO, F_GETFL);
  345. fcntl(STDIN_FILENO, F_SETFL, flags|O_NONBLOCK);
  346.  
  347. // To get the input from the terminal without pressing the enter button
  348. system ("/bin/stty raw");
  349. read(STDIN_FILENO, key, 4);
  350. // Reset the "system ("/bin/stty raw")" to display correctly the output
  351. system ("/bin/stty cooked");
  352.  
  353. return key[0];
  354.  
  355. }
  356.  
  357. void array(char **table, int dimension, int score)
  358. {
  359.  
  360. int i, j, dimension;
  361.  
  362. for( i=0; i<dimension; i++)
  363. {
  364. table[i] = (char*)malloc(dimension * sizeof(char));
  365.  
  366. }
  367. for(i=0; i<dimension; i++)
  368. {
  369.  
  370. for ( j=0; j < dimension; j++)
  371. {
  372. if(i == 0 || i == dimension-1)
  373. {
  374. table[i][j] = '-';
  375. }
  376. else if(j==0 || j == dimension-1)
  377. {
  378. table[i][j] = '|';
  379. }
  380. else
  381. {
  382. table[i][j] = ' ';
  383. }
  384. }
  385.  
  386. }
  387. for (i=0;i<dimension; i++)
  388. {
  389. for(j=0;j<dimension; ++j)
  390. {
  391. printf("%c",table[i][j]);
  392. }
  393.  
  394. printf("\n");
  395. printf("score: %d\n",score);
  396. }
  397. }
  398. void clear_screen()
  399. {
  400. system("clear");
  401. return;
  402. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement