Guest User

Untitled

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