Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <graphics.h>
- #include <windows.h>
- #include <stdlib.h>
- #include <time.h>
- #include <stdio.h>
- #include <math.h>
- #define N 5
- struct pocisk {
- int x, y, widoczny;
- };
- struct przeciwnik {
- int x, y, widoczny;
- };
- int gamestate=0;
- int menustate=0;
- int podmenu=0;
- int max_pkt = 10;
- int wynik=0;
- int shootSpeedRate=0;
- int iloscZabic=0;
- int poziom = 0;
- void init(void)
- {
- int errorcode;
- initwindow(getmaxwidth()/2, getmaxheight()/2); // otwarcie okna graficznego
- errorcode = graphresult(); // weryfikacja, czy inicjalizacja sie udala
- if (errorcode != grOk) { // problem !
- printf("Blad BGI: %s\n", grapherrormsg(errorcode));
- printf("Wcisnij dowolny klawicz, zeby zakonczyc:");
- getch();
- }
- }
- void obiekt(int x, int y, int widoczny){
- if(widoczny==1)
- setcolor(WHITE);
- else
- setcolor(BLACK);
- line(x,y,x+15,y+30);
- line(x+15,y+30,x+5,y+30);
- line(x+5,y+30,x,y+15);
- line(x,y+15,x-5,y+30);
- line(x-5,y+30,x-15,y+30);
- line(x-15,y+30,x,y);
- }
- void przeciwnik(int x, int y, int widoczny){
- if(widoczny==1)
- setcolor(WHITE);
- else
- setcolor(BLACK);
- circle(x, y, 10);
- }
- void strzal(int x, int y, int widoczny,struct pocisk* pociski,int lp){
- struct pocisk p;
- p.x=x;
- p.y=y;
- p.widoczny=1;
- pociski[lp]=p;
- }
- void trafienie(struct pocisk* pociski, struct przeciwnik* przeciwnicy, int lp, int dp, int& l){
- for(int i=0; i<lp; i++){
- if (pociski[i].widoczny){
- for(int j=0; j<dp; j++){
- if( przeciwnicy[j].widoczny){
- 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){
- przeciwnicy[j].widoczny=0;
- pociski[i].widoczny=0;
- wynik+=5;
- iloscZabic++;
- }
- }
- }
- }
- }
- }
- void dopasujAI(struct przeciwnik* przeciwnicy, int dp, int x, int y){
- for(int i=0; i<dp; i++){
- if(y - przeciwnicy[i].y < 200 && y - przeciwnicy[i].y > 0){
- switch(poziom){
- case 0:
- shootSpeedRate=9;
- break;
- case 1:
- shootSpeedRate=5;
- break;
- case 2:
- shootSpeedRate=1;
- break;
- }
- }
- if(y - przeciwnicy[i].y < 400 && y - przeciwnicy[i].y > 200){
- switch(poziom){
- case 0:
- shootSpeedRate=10;
- break;
- case 1:
- shootSpeedRate=6;
- break;
- case 2:
- shootSpeedRate=2;
- break;
- }
- }
- if(y - przeciwnicy[i].y > 400){
- switch(poziom){
- case 0:
- shootSpeedRate=11;
- break;
- case 1:
- shootSpeedRate=7;
- break;
- case 2:
- shootSpeedRate=3;
- break;
- }
- }
- }
- }
- void trafieniep(struct pocisk* pociskip,int x, int y, int lp, int& l){
- for(int i=0; i<lp; i++){
- if (pociskip[i].widoczny==1){
- int liczba = (pociskip[i].x-x)*(pociskip[i].x-x)+(pociskip[i].y-(y+15))*(pociskip[i].y-(y+15));
- if (((pociskip[i].x-x)*(pociskip[i].x-x))+((pociskip[i].y-(y+15))*(pociskip[i].y-(y+15)))<=150){
- pociskip[i].widoczny=0;
- wynik-=10;
- }
- }
- }
- }
- void sztrzalp(struct przeciwnik* przeciwnicy,int dp, int x, int y, struct pocisk* pociskp, int &np){
- for (int i=0; i<dp; i++){
- if(przeciwnicy[i].widoczny){
- struct pocisk p;
- p.x=przeciwnicy[i].x;
- p.y=przeciwnicy[i].y;
- p.widoczny=1;
- pociskp[np]=p;
- np++;
- }
- }
- }
- int gra(void){
- struct pocisk pociski[10000];
- struct przeciwnik przeciwnicy[100];
- struct pocisk pociskp[10000];
- int xs,ys,x,y,p,a,b,lp=0, dp=0, l=0, koniec=0, np=0;
- char kod,kod2;
- char str[3];
- char temp_string[100];
- char tekst[15];
- clock_t czas;
- float zmianaczas;
- x=200;
- y=400;
- init();
- czas=clock();
- for(int j=0; j <10; j++) {
- struct przeciwnik d;
- d.x=100+j*50;
- d.y= 50;
- d.widoczny=1;
- przeciwnicy[dp]=d;
- dp++;
- }
- do {
- readimagefile("1.jpg", 0, 0, 800, 800);
- if(gamestate==0){
- if(podmenu==0){
- if (koniec==1)
- break;
- if(menustate==0)
- setcolor(YELLOW);
- else
- setcolor(WHITE);
- sprintf (temp_string, "Nowa gra");
- outtextxy(200,200, temp_string);
- if(menustate==1)
- setcolor(YELLOW);
- else
- setcolor(WHITE);
- sprintf (temp_string, "Pomoc");
- outtextxy(200,300, temp_string);
- if(menustate==2)
- setcolor(YELLOW);
- else
- setcolor(WHITE);
- sprintf (temp_string, "Wyjdz");
- outtextxy(200,400, temp_string);
- }
- if(podmenu==1){
- cleardevice();
- readimagefile("1.jpg", 0, 0, 800, 800);
- if(menustate==0)
- setcolor(YELLOW);
- else
- setcolor(WHITE);
- sprintf (temp_string, "latwe");
- outtextxy(200,200, temp_string);
- if(menustate==1)
- setcolor(YELLOW);
- else
- setcolor(WHITE);
- sprintf (temp_string, "sred");
- outtextxy(200,300, temp_string);
- if(menustate==2)
- setcolor(YELLOW);
- else
- setcolor(WHITE);
- sprintf (temp_string, "trudn");
- outtextxy(200,400, temp_string);
- }
- kod=getch();
- switch(kod){
- case 72:
- menustate--;
- if(menustate<0)
- menustate=2;
- break;
- case 80:
- menustate++;
- if(menustate>2)
- menustate=0;
- break;
- case 'z':
- koniec=1;
- if(menustate==0 && podmenu==0){
- podmenu=1;
- menustate==0;
- break;
- }
- if(menustate==1 && podmenu==0){
- cleardevice();
- while(!kbhit()){
- sprintf (temp_string, "Sterowanie: \n wasd - poruszanie sie \n k - strzal");
- outtextxy(200,300, temp_string);
- koniec=1;
- }}
- if(podmenu==1){
- if(menustate==0){
- poziom=0;
- gamestate=1;
- }
- if(menustate==1){
- poziom=1;
- gamestate=1;
- }
- if(menustate==2){
- poziom=2;
- gamestate=1;
- }
- }
- break;
- case 0x3B:
- koniec=1;
- break;
- }
- }
- else{
- cleardevice();
- koniec=0;
- int shootRate=0;
- if(shootSpeedRate==12) poziom=0;
- if(shootSpeedRate==8) poziom=1;
- if(shootSpeedRate==4) poziom=3;
- while(!kbhit()) {
- cleardevice();
- zmianaczas=(float)(clock()-czas)/CLOCKS_PER_SEC;
- czas=clock();
- obiekt(x,y,1);
- xs=x;
- ys=y;
- if(iloscZabic==5){
- for(int j=0; j <5; j++) {
- struct przeciwnik d;
- d.x=100+j*150;
- d.y= -20+(-50);
- d.widoczny=1;
- przeciwnicy[dp]=d;
- dp++;
- iloscZabic=0;
- }
- }
- for(int i=0;i<lp;i++){
- if(pociski[i].widoczny==1){
- pociski[i].y-= zmianaczas*40;
- putpixel(pociski[i].x,pociski[i].y,WHITE);
- }
- }
- for(int i=0;i<np;i++){
- if(pociskp[i].widoczny==1){
- pociskp[i].y+= zmianaczas*60;
- putpixel(pociskp[i].x,pociskp[i].y,YELLOW);
- }
- }
- for(int i=0;i<=dp;i++){
- if(przeciwnicy[i].widoczny==1){
- if(przeciwnicy[i].y < 30)
- przeciwnicy[i].y+= zmianaczas*20;
- przeciwnik(przeciwnicy[i].x, przeciwnicy[i].y , 1);
- }
- }
- if(shootRate<shootSpeedRate)
- shootRate++;
- else
- {
- sztrzalp(przeciwnicy, dp, x, y, pociskp, np);
- shootRate=0;
- }
- trafienie(pociski, przeciwnicy, lp, dp, wynik);
- trafieniep(pociskp, x, y, np, l);
- dopasujAI(przeciwnicy, dp, x, y);
- sprintf (str, "Score : %d", wynik);
- outtextxy(100,20,str);
- sprintf (str, "Score : %d", dp);
- outtextxy(400,20,str);
- sprintf (str, "ShootSpeedRate : %d", shootSpeedRate);
- outtextxy(400,50,str);
- if(wynik==max_pkt){
- cleardevice();
- while(!kbhit()){
- sprintf (temp_string, "Gratulacje! Wygrales!");
- outtextxy(200,300, temp_string);
- koniec=1;
- }
- }
- delay (50);
- }
- kod=getch();
- switch(kod){
- case 's':
- if(y<getmaxy()-45) y+=N;
- break;
- case 'w':
- if(y>0) y-=N;
- break;
- case 'a':
- if(x-45>0) x-=N;
- break;
- case 'd':
- if(x+45<getmaxx()) x+=N;
- break;
- case 'k':
- struct pocisk p;
- p.x=x;
- p.y=y;
- p.widoczny=1;
- pociski[lp]=p;
- strzal(x,y,1,pociski,lp);
- lp++;
- break;
- case 59:
- cleardevice();
- while(!kbhit()){
- sprintf (temp_string, "Tutaj bedzie jakas pomoc!");
- outtextxy(200,300, temp_string);
- }
- break;
- case 0x1b:
- koniec=1;
- break;
- }
- if (koniec==1)
- break;
- }
- } while(1);
- closegraph();
- return wynik;
- }
Add Comment
Please, Sign In to add comment