Guest User

Untitled

a guest
May 24th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.81 KB | None | 0 0
  1. #include <graphics.h>
  2. #include <windows.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <stdio.h>
  6. #include <math.h>
  7. #define N 5
  8.  
  9. struct pocisk {
  10. int x, y, widoczny;
  11. };
  12.  
  13. struct przeciwnik {
  14. int x, y, widoczny;
  15. };
  16. short int gamestate=0;
  17. short int menustate=0;
  18. short int podmenu=0;
  19. const int max_pkt = 10;
  20. int wynik=0;
  21. int shootSpeedRate=2;
  22. int iloscZabic=0;
  23. int poziom = 0;
  24. void init(void)
  25. {
  26. int errorcode;
  27. initwindow(getmaxwidth()/2, getmaxheight()/2); // otwarcie okna graficznego
  28. errorcode = graphresult(); // weryfikacja, czy inicjalizacja sie udala
  29. if (errorcode != grOk) { // problem !
  30. printf("Blad BGI: %s\n", grapherrormsg(errorcode));
  31. printf("Wcisnij dowolny klawicz, zeby zakonczyc:");
  32. getch();
  33. }
  34. }
  35.  
  36. void obiekt(int x, int y, int widoczny){
  37. if(widoczny==1)
  38. setcolor(WHITE);
  39. else
  40. setcolor(BLACK);
  41. line(x,y,x+15,y+30);
  42. line(x+15,y+30,x+5,y+30);
  43. line(x+5,y+30,x,y+15);
  44. line(x,y+15,x-5,y+30);
  45. line(x-5,y+30,x-15,y+30);
  46. line(x-15,y+30,x,y);
  47. }
  48.  
  49. void przeciwnik(int x, int y, int widoczny){
  50. if(widoczny==1)
  51. setcolor(WHITE);
  52. else
  53. setcolor(BLACK);
  54. circle(x, y, 10);
  55. }
  56.  
  57.  
  58.  
  59. void strzal(int x, int y, int widoczny,struct pocisk* pociski,int lp){
  60. struct pocisk p;
  61. p.x=x;
  62. p.y=y;
  63. p.widoczny=1;
  64. pociski[lp]=p;
  65. }
  66. void trafienie(struct pocisk* pociski, struct przeciwnik* przeciwnicy, int lp, int dp, int& l){
  67. for(int i=0; i<lp; i++){
  68. if (pociski[i].widoczny){
  69. for(int j=0; j<dp; j++){
  70. if( przeciwnicy[j].widoczny){
  71. if (((pociski[i].x-przeciwnicy[j].x)*(pociski[i].x-przeciwnicy[j].x))+((pociski[i].y-przeciwnicy[j].y)*(pociski[i].y-przeciwnicy[j].y))<=121){
  72. przeciwnicy[j].widoczny=0;
  73. pociski[i].widoczny=0;
  74. wynik+=5;
  75. iloscZabic++;
  76. }
  77. }
  78. }
  79. }
  80. }
  81. }
  82. void dopasujAI(struct przeciwnik* przeciwnicy, int dp, int x, int y){
  83. for(int i=0; i<dp; i++){
  84. if(y - przeciwnicy[i].y < 200 && y - przeciwnicy[i].y > 0){
  85. switch(poziom){
  86. case 0:
  87. shootSpeedRate=9;
  88. break;
  89. case 1:
  90. shootSpeedRate=5;
  91. break;
  92. case 2:
  93. shootSpeedRate=1;
  94. break;
  95. }
  96. }
  97. if(y - przeciwnicy[i].y < 400 && y - przeciwnicy[i].y > 200){
  98. switch(poziom){
  99. case 0:
  100. shootSpeedRate=10;
  101. break;
  102. case 1:
  103. shootSpeedRate=6;
  104. break;
  105. case 2:
  106. shootSpeedRate=2;
  107. break;
  108. }
  109. }
  110. if(y - przeciwnicy[i].y > 400){
  111. switch(poziom){
  112. case 0:
  113. shootSpeedRate=11;
  114. break;
  115. case 1:
  116. shootSpeedRate=7;
  117. break;
  118. case 2:
  119. shootSpeedRate=3;
  120. break;
  121. }
  122. }
  123. }
  124.  
  125. }
  126. void trafieniep(struct pocisk* pociskip,int x, int y, int lp, int& l){
  127. for(int i=0; i<lp; i++){
  128. if (pociskip[i].widoczny==1){
  129. int liczba = (pociskip[i].x-x)*(pociskip[i].x-x)+(pociskip[i].y-(y+15))*(pociskip[i].y-(y+15));
  130.  
  131.  
  132. if (((pociskip[i].x-x)*(pociskip[i].x-x))+((pociskip[i].y-(y+15))*(pociskip[i].y-(y+15)))<=150){
  133.  
  134. pociskip[i].widoczny=0;
  135. wynik-=10;
  136. }
  137.  
  138. }
  139. }
  140. }
  141.  
  142. void sztrzalp(struct przeciwnik* przeciwnicy,int dp, int x, int y, struct pocisk* pociskp, int &np){
  143. for (int i=0; i<dp; i++){
  144. if(przeciwnicy[i].widoczny){
  145. struct pocisk p;
  146. p.x=przeciwnicy[i].x;
  147. p.y=przeciwnicy[i].y;
  148. p.widoczny=1;
  149. pociskp[np]=p;
  150. np++;
  151. /*if(sqrt(((przeciwnicy[i].x-x)*(przeciwnicy[i].x-x))+((przeciwnicy[i].y-(y+15))*(przeciwnicy[i].y-(y+15))))<100){
  152. struct pocisk p;
  153. p.x=przeciwnicy[i].x;
  154. p.y=przeciwnicy[i].y;
  155. p.widoczny=1;
  156. pociskp[np]=p;
  157. np++;
  158. }*/
  159. }
  160. }
  161. }
  162.  
  163. //void initgame(){
  164. // for(int i=0; i < 4; i++) {
  165. // for(int j=0; j < 10; j++) {
  166. // struct przeciwnik d;
  167. // d.x=100+j*50;
  168. // d.y= -20+(-50)*(i);
  169. // d.widoczny=1;
  170. // przeciwnicy[dp]=d;//strzal(x,y,1,pociski,lp);
  171. // dp++;
  172. // }
  173. // }
  174. //}
  175.  
  176. int start(){
  177. struct pocisk pociski[1000];
  178. struct przeciwnik przeciwnicy[100];
  179. struct pocisk pociskp[1000];
  180. int xs,ys,x,y,p,a,b,lp=0, dp=0, l=0, koniec=0, np=0;
  181. char kod,kod2;
  182. char str[3];
  183. char temp_string[100];
  184. char tekst[15];
  185.  
  186. clock_t czas;
  187. float zmianaczas;
  188.  
  189. x=200;
  190. y=400;
  191. init();
  192. // menu();
  193.  
  194. czas=clock();
  195. //for(int i=0; i < 4; i++) {
  196. for(int j=0; j <5; j++) {
  197. struct przeciwnik d;
  198. d.x=100+j*150;
  199. d.y= 50;
  200. d.widoczny=1;
  201. przeciwnicy[dp]=d;//strzal(x,y,1,pociski,lp);
  202. dp++;
  203. }
  204. // }
  205. do {
  206. if(gamestate==0){
  207. if(podmenu==0){
  208. if (koniec==1)
  209. break;
  210. if(menustate==0)
  211. setcolor(YELLOW);
  212. else
  213. setcolor(WHITE);
  214. sprintf (temp_string, "Nowa gra");
  215. outtextxy(200,200, temp_string);
  216. if(menustate==1)
  217. setcolor(YELLOW);
  218. else
  219. setcolor(WHITE);
  220. sprintf (temp_string, "Opcje");
  221. outtextxy(200,300, temp_string);
  222. if(menustate==2)
  223. setcolor(YELLOW);
  224. else
  225. setcolor(WHITE);
  226. sprintf (temp_string, "Wyjdz");
  227. outtextxy(200,400, temp_string);
  228. }
  229. if(podmenu==1){
  230. cleardevice();
  231. if(menustate==0)
  232. setcolor(YELLOW);
  233. else
  234. setcolor(WHITE);
  235. sprintf (temp_string, "latwe");
  236. outtextxy(200,200, temp_string);
  237. if(menustate==1)
  238. setcolor(YELLOW);
  239. else
  240. setcolor(WHITE);
  241. sprintf (temp_string, "sred");
  242. outtextxy(200,300, temp_string);
  243. if(menustate==2)
  244. setcolor(YELLOW);
  245. else
  246. setcolor(WHITE);
  247. sprintf (temp_string, "trudn");
  248. outtextxy(200,400, temp_string);
  249. }
  250.  
  251. kod=getch();
  252. switch(kod){
  253. case 72:
  254. menustate--;
  255. if(menustate<0)
  256. menustate=2;
  257. break;
  258. case 80:
  259. menustate++;
  260. if(menustate>2)
  261. menustate=0;
  262. break;
  263. case 'z':
  264. koniec=1;
  265.  
  266. if(menustate==0 && podmenu==0){
  267. podmenu=1;
  268. menustate==0;
  269. break;
  270. }
  271. if(podmenu==1){
  272. if(menustate==0){
  273. poziom=0;
  274. gamestate=1;
  275. }
  276. if(menustate==1){
  277. poziom=1;
  278. gamestate=1;
  279.  
  280. }
  281. if(menustate==2){
  282. poziom=2;
  283. gamestate=1;
  284.  
  285. }
  286. }
  287. break;
  288. case 0x3B:
  289. koniec=1;
  290. break;
  291. }
  292.  
  293.  
  294. }
  295. else{
  296. koniec=0;
  297. int shootRate=0;
  298. if(shootSpeedRate==12) poziom=0;
  299. if(shootSpeedRate==8) poziom=1;
  300. if(shootSpeedRate==4) poziom=3;
  301. while(!kbhit()) {
  302. cleardevice();
  303. zmianaczas=(float)(clock()-czas)/CLOCKS_PER_SEC;
  304. czas=clock();
  305. obiekt(x,y,1);
  306. xs=x;
  307. ys=y;
  308. //readimagefile("1.jpg", 0, 0, 800, 800);
  309. if(iloscZabic==5){
  310. for(int j=0; j <5; j++) {
  311. struct przeciwnik d;
  312. d.x=100+j*150;
  313. d.y= -20+(-50);
  314. d.widoczny=1;
  315. przeciwnicy[dp]=d;//strzal(x,y,1,pociski,lp);
  316. dp++;
  317. iloscZabic=0;
  318. }
  319. }
  320. for(int i=0;i<lp;i++){
  321. if(pociski[i].widoczny==1){
  322. pociski[i].y-= zmianaczas*40;
  323. putpixel(pociski[i].x,pociski[i].y,WHITE);
  324. }
  325. }
  326. for(int i=0;i<np;i++){
  327. if(pociskp[i].widoczny==1){
  328. pociskp[i].y+= zmianaczas*60;
  329. putpixel(pociskp[i].x,pociskp[i].y,RED);
  330. }
  331. }
  332. for(int i=0;i<=dp;i++){
  333. if(przeciwnicy[i].widoczny==1){
  334. if(przeciwnicy[i].y < 30)
  335. przeciwnicy[i].y+= zmianaczas*20;
  336. przeciwnik(przeciwnicy[i].x, przeciwnicy[i].y , 1);
  337. }
  338. }
  339. if(shootRate<shootSpeedRate)
  340. shootRate++;
  341. else
  342. {
  343. sztrzalp(przeciwnicy, dp, x, y, pociskp, np);
  344. shootRate=0;
  345. }
  346. trafienie(pociski, przeciwnicy, lp, dp, wynik);
  347. trafieniep(pociskp, x, y, np, l);
  348. dopasujAI(przeciwnicy, dp, x, y);
  349. sprintf (str, "Score : %d", wynik);
  350.  
  351. outtextxy(100,20,str);
  352.  
  353. sprintf (str, "Score : %d", dp);
  354. outtextxy(400,20,str);
  355.  
  356. sprintf (str, "ShootSpeedRate : %d", shootSpeedRate);
  357.  
  358. outtextxy(400,50,str);
  359.  
  360.  
  361. if(wynik==max_pkt){
  362. cleardevice();
  363. while(!kbhit()){
  364. sprintf (temp_string, "Gratulacje! Wygrales!");
  365. outtextxy(200,300, temp_string);
  366. koniec=1;
  367. }
  368. }
  369. delay (50);
  370. //obiekt(xs,ys,0);
  371. }
  372.  
  373.  
  374. kod=getch();
  375. switch(kod){
  376. case 's':
  377. if(y<getmaxy()-45) y+=N;
  378. break;
  379. case 'w':
  380. if(y>0) y-=N;
  381. break;
  382. case 'a':
  383. if(x-45>0) x-=N;
  384. break;
  385. case 'd':
  386. if(x+45<getmaxx()) x+=N;
  387. break;
  388. case 'k':
  389. struct pocisk p;
  390. p.x=x;
  391. p.y=y;
  392. p.widoczny=1;
  393. pociski[lp]=p;
  394. strzal(x,y,1,pociski,lp);
  395. lp++;
  396. break;
  397. case 59:
  398. cleardevice();
  399. while(!kbhit()){
  400. sprintf (temp_string, "Tutaj bedzie jakas pomoc!");
  401. outtextxy(200,300, temp_string);
  402. }
  403. break;
  404. case 0x1b:
  405. koniec=1;
  406. break;
  407. }
  408.  
  409. if (koniec==1)
  410. break;
  411.  
  412. }
  413. } while(1);
  414. FILE * pFile;
  415. char name [100];
  416.  
  417. pFile = fopen ("wynik.txt","w");
  418. puts ("Podaj imie: ");
  419. gets (name);
  420. fprintf (pFile, "Name %d [%-10.10s]\n",wynik,name);
  421. fclose (pFile);
  422. }
Add Comment
Please, Sign In to add comment