Guest User

Untitled

a guest
May 24th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.68 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 main(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.  
  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.  
  336. }
  337. break;
  338. }
  339.  
  340. if(podmenu==1){
  341. if(menustate==0){
  342. poziom=0;
  343. gamestate=1;
  344.  
  345. }
  346. if(menustate==1){
  347. poziom=1;
  348. gamestate=1;
  349.  
  350. }
  351. if(menustate==2){
  352. poziom=2;
  353. gamestate=1;
  354.  
  355.  
  356. }
  357. }
  358. break;
  359. case 0x3B:
  360. koniec=1;
  361. break;
  362. }
  363. }
  364.  
  365. else{
  366. cleardevice();
  367. koniec=0;
  368.  
  369. int shootRate=0;
  370.  
  371. if(shootSpeedRate==12) poziom=0;
  372.  
  373. if(shootSpeedRate==8) poziom=1;
  374.  
  375. if(shootSpeedRate==4) poziom=3;
  376.  
  377. while(!kbhit()) {
  378. cleardevice();
  379. zmianaczas=(float)(clock()-czas)/CLOCKS_PER_SEC;
  380. czas=clock();
  381. obiekt(x,y,1);
  382. xs=x;
  383. ys=y;
  384.  
  385. if(iloscZabic==5){
  386. for(int j=0; j <5; j++) {
  387. struct przeciwnik d;
  388. d.x=100+j*150;
  389. d.y= -20+(-50);
  390. d.widoczny=1;
  391. przeciwnicy[dp]=d;
  392. dp++;
  393. iloscZabic=0;
  394. }
  395. }
  396. for(int i=0;i<lp;i++){
  397. if(pociski[i].widoczny==1){
  398. pociski[i].y-= zmianaczas*40;
  399. putpixel(pociski[i].x,pociski[i].y,WHITE);
  400. }
  401. }
  402. for(int i=0;i<np;i++){
  403. if(pociskp[i].widoczny==1){
  404. pociskp[i].y+= zmianaczas*60;
  405. putpixel(pociskp[i].x,pociskp[i].y,YELLOW);
  406. }
  407. }
  408.  
  409. for(int i=0;i<=dp;i++){
  410. if(przeciwnicy[i].widoczny==1){
  411. if(przeciwnicy[i].y < 30)
  412. przeciwnicy[i].y+= zmianaczas*20;
  413. przeciwnik(przeciwnicy[i].x, przeciwnicy[i].y , 1);
  414. }
  415. }
  416. if(shootRate<shootSpeedRate)
  417. shootRate++;
  418. else
  419. {
  420. sztrzalp(przeciwnicy, dp, x, y, pociskp, np);
  421. shootRate=0;
  422. }
  423.  
  424. trafienie(pociski, przeciwnicy, lp, dp, wynik);
  425.  
  426. trafieniep(pociskp, x, y, np, l);
  427.  
  428. dopasujAI(przeciwnicy, dp, x, y);
  429.  
  430. sprintf (str, "Score : %d", wynik);
  431. outtextxy(100,20,str);
  432.  
  433. sprintf (str, "Score : %d", dp);
  434. outtextxy(400,20,str);
  435.  
  436. sprintf (str, "ShootSpeedRate : %d", shootSpeedRate);
  437. outtextxy(400,50,str);
  438.  
  439. if(wynik==max_pkt){
  440. cleardevice();
  441. while(!kbhit()){
  442. sprintf (temp_string, "Gratulacje! Wygrales!");
  443. outtextxy(200,300, temp_string);
  444. koniec=1;
  445.  
  446. }
  447.  
  448. }
  449.  
  450. delay (50);
  451.  
  452.  
  453. }
  454.  
  455.  
  456.  
  457.  
  458.  
  459. kod=getch();
  460.  
  461. switch(kod){
  462.  
  463. case 's':
  464.  
  465. if(y<getmaxy()-45) y+=N;
  466.  
  467. break;
  468.  
  469. case 'w':
  470.  
  471. if(y>0) y-=N;
  472.  
  473. break;
  474.  
  475. case 'a':
  476.  
  477. if(x-45>0) x-=N;
  478.  
  479. break;
  480.  
  481. case 'd':
  482.  
  483. if(x+45<getmaxx()) x+=N;
  484.  
  485. break;
  486.  
  487. case 'k':
  488.  
  489. struct pocisk p;
  490.  
  491. p.x=x;
  492.  
  493. p.y=y;
  494.  
  495. p.widoczny=1;
  496.  
  497. pociski[lp]=p;
  498.  
  499. strzal(x,y,1,pociski,lp);
  500.  
  501. lp++;
  502.  
  503. break;
  504.  
  505. case 59:
  506.  
  507. cleardevice();
  508.  
  509. while(!kbhit()){
  510.  
  511. sprintf (temp_string, "Tutaj bedzie jakas pomoc!");
  512. outtextxy(200,300, temp_string);
  513. }
  514. break;
  515. case 0x1b:
  516. koniec=1;
  517. break;
  518. }
  519. if (koniec==1)
  520. break;
  521. }
  522. } while(1);
  523. closegraph();
  524. return wynik;
  525.  
  526. }
Add Comment
Please, Sign In to add comment