
Бывалый

Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008
Репутация: нет Всего: нет
|
Да, mes вообщем ты прав. Сейчас все работает, за помощь спасибо. Код | #include <string.h> #include <math.h> #include <graphics.h> #include <dos.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <iostream.h> #include <process.h> #include <time.h>
#define path "c:\\borlandc\\bin\\" #define c15 textcolor(15); #define col 60 #define row 3
int i,k=10,l=0,j,x=5, y=5, vx=1, vy=1, paddle=1, z, points=0, level=0, timet=0, blocks[row][col];
char a,ch; float s=1;
clock_t t1=0, t2=0; // timers
FILE *f; struct scores {int p; char name[10];} h;
void stats() { f=fopen("scores.txt","rb"); fread(&h,sizeof(h),1,f); while(!feof(f)) {printf("%s %d",h.name,h.p); putchar('\n'); fread(&h,sizeof(h),1,f);} fclose(f); }
void arc(void) { gotoxy(1,25); for(i=0; i<79; i++) printf("."); gotoxy(paddle,25); printf("!@@@@@!"); }
int ball(void) { t2=clock(); if((t2-t1)*(s/2) < timet) return 0; t1=clock();
gotoxy(x,y); // koordinati sharika c15; cprintf(" "); // zatiraet shleyf sharika
if(x<=2 || x > 77) vx*=-1; if(y>23) // granica. SHAR DOHODIT DO NIZA { if(x+2==paddle) // (_!)xxxxx { vy=-1; z=0; vx=-1; s++;
}
if(x+1==(paddle) && x+2==(paddle+1)) // !@xxxx { vy=-1; z=-k; vx=-1;
}
if(x==(paddle) && x+1==(paddle+1) && x+2==(paddle+2))
{ vy=-1; z=0; vx=-1;
}
if(x==(paddle+1) && x+1==(paddle+2) && x+2==(paddle+3)) // xx@@xx { vy=-1; z=0; vx=-1;
}
if(x==(paddle+2) && x+1==(paddle+3) && x+2==(paddle+4)) // xxx@@x { if(vy==1) {vy=-1; vx=0;} else vy=1; vx=0;
}
if(x==(paddle+3) && x+1==(paddle+4) && x+2==(paddle+5)) // xxxx@! { vy=-1; z=0; vx=1;
}
if(x==(paddle+4) && x+1==(paddle+5) && x+2==(paddle+6)) { vy=-1; z=0; vx=1; }
if(x==(paddle+5) && x+1==(paddle+6))// xxxxx(!_) { vy=-1; z=k; vx=1; }
if(x==(paddle+6)) { vy=-1; z=0; vx=1; s++; }
if(x>(paddle+7) || (x+2) < paddle-1){ z=0; return 1;} // SHAR KRANTI }
if(y<=2) vy*=-1; // OTTALKIVANIE OT POTOLKA
if(z==k && l%4 == 0) vx=1; if(z==k && l%4 != 0) vx=0; if(z==-k && l%4 == 0) vx=-1; if(z==-k && l%4 != 0) vx=0;
x+=vx; y+=vy; l++; gotoxy(x,y); c15; cprintf("[ ]");
for(i=3; i < row+3; i++) { for(j=0; j < col; j++) { if(blocks[i-3][j]==1) { if(x==(10+j) && y==i) { blocks[i-3][j]=0; points++; vy*=-1; vx*=-1; z=0;
} } } }
gotoxy(1,1); // INDIKATOR SBITIH KVADRATIKOV printf("Points: %d",points); return 0; }
void putsq(void) { textcolor(random(4*2)+1); cprintf("\376"); }
void squares(void) { for(i=3; i < row+3; i++) { for(j=0; j < col; j++) { gotoxy(10+j,i); putsq(); } } }
void game() {
clrscr(); for(i=0; i < row; i++) { for(j=0; j < col; j++) { blocks[i][j]=1; } }
do { c15; cprintf("\nEnter difficulty 1<=diff<=4: "); scanf("%d",&level); }
while(level < 1 || level > 4); clrscr(); timet=level+1; squares();
do { a=0; if(kbhit()) { a=getch(); if(a==77) { paddle++;
} if(a==75) { paddle--;
} if(paddle < 2) paddle=2; // GRANICI DVIJENIYA ARKANOIDA if(paddle > 73) paddle=73; if(a == 32) break; // BREAK NA PROBEL arc(); } if(ball()) break; } while(1);
if(points>100) { clrscr(); c15; cprintf("You are winner! Enter your name: "); scanf("%s",&h.name); }
clrscr(); c15; cprintf("You are loose!( Enter your name: "); scanf("%s",&h.name);
h.p=points;
f=fopen("scores.txt","ab"); fwrite(&h,sizeof(h),1,f); fclose(f);
putchar('\n'); printf("Eshe raz?: "); ch=getch();
i,k=10,l=0,j,x=5, y=5, vx=1, vy=1, paddle=1, z, points=0, level=0, timet=0; a,ch; s=1; clock_t t1=0, t2=0; // timers }
void menu(int a,int b,int c) { setcolor(a); settextstyle(TRIPLEX_FONT,HORIZ_DIR,4); outtextxy(235,200,"1. GAME");
setcolor(b); settextstyle(TRIPLEX_FONT,HORIZ_DIR,4); outtextxy(235,230,"2. SCORE");
setcolor(c); settextstyle(TRIPLEX_FONT,HORIZ_DIR,4); outtextxy(235,260,"3. EXIT"); }
void main() { // <Подключение графики> int gdriver=DETECT; int gmode; int errorcode;
initgraph(&gdriver,&gmode,path); errorcode=graphresult();
if(errorcode != grOk) { printf("Error: %d\n",errorcode); puts("For ending program press <enter>"); getch(); exit(1); } // </Подключение графики>
// <Логотип игры> settextstyle(TRIPLEX_FONT,HORIZ_DIR,0); setcolor(LIGHTCYAN); setusercharsize(2,1,1,1); outtextxy(175,150,"Arcanoid"); // </Логотип игры>
// <Меню игры>
char choose; int move=1;
menu(8,8,8); choose=getch();
while(choose!=27) {
if(choose==13) break; if(choose=='P') move++; if(choose=='H') move--;
if(move<1) move=3; if(move>3) move=1;
if(move==1) menu(10,8,8); if(move==2) menu(8,10,8); if(move==3) menu(8,8,10);
choose=getch();
delay(10);
} cleardevice(); closegraph();
if(move==3) exit(0); if(move==1) { do { game();
} while(ch != 'n'); }
if(move==2) { stats(); }
printf("Press key to exit"); getch(); }
|
Рабочая версия. Может кому-нибудь пригодится. Это сообщение отредактировал(а) Alexey91 - 30.4.2009, 13:53
|