// Don't be a lamer please! // (C)1997 Henrik Tingström // E-mail:henrik_tingstrom@hotmail.com #include #include #include #include #include #include #define antal 20 #define antalkill 30 #define antstars 200 void cls(int); void nollstall(int); void nollstall_star_init(int); void nollstall_blow(int); void vsync(void); void ball(void); void kill_ship(void); void grafik(void); void stars(void); void game_on(void); void shoots(void); void rita_skepp(void); void meteorer(void); void starta(void); void kill_meteor(int); void blow_meteor(int); void ledtext(void); void inledning(void); void rita_kill(void); int ch, skott, skottx, skotty, farg[antal]; int liv, kill; float meteor[antal][5], shipx, shipy; int blow[antal][6][2]; int ballhv, ballxv, ballyv, svart, start, level; float poang, vink, levelrakn, hast, ballh, ballx, bally,; float star[antstars][5]; float stor[antal]; char c; void main(void) { system("mode con rate = 32 delay 1"); grafik(); randomize(); cls(BLACK); settextjustify(CENTER_TEXT, CENTER_TEXT); for(int i=0;i 60) { hast+=0.4; level++; // svart--; if(svart < 0) svart = 1; levelrakn=0; // cls(BLACK); } if(hast > -3) levelrakn+=0.5; ball(); stars(); if(kill != 0) rita_kill(); if(start != 0) starta(); else meteorer(); ledtext(); vsync(); delay(40); } liv = 0; cls(BLACK); kill = 3; svart = 5; hast = 1; ledtext(); if(level < 5) level=5; do{ if(kbhit()) c = getch(); stars(); // meteorer(); ball(); ledtext(); setcolor(WHITE); outtextxy(getmaxx()/2,getmaxy()/2-50,"Game Over"); outtextxy(getmaxx()/2,getmaxy()/2,"Play Again? (Y/N)"); vsync(); delay(40); } while((c != 'n' && c != 'N') && (c != 'y' && c != 'Y')); cls(BLACK); } while((c == 'y') || (c == 'Y')); level=-1; while(!kbhit()) { // setcolor(DARKGRAY); // outtextxy(getmaxx()/2,getmaxy()/2-50,"***ORIH3D***"); // outtextxy(getmaxx()/2,getmaxy()/2,"(c)1997 Henrik Tingstr”m"); stars(); // meteorer(); ball(); vsync(); delay(40); } closegraph(); } void inledning(void) { int i; for(i=0;i<50;i++) { ball(); stars(); delay(40); } for(i=0;i<50;i++) { ball(); stars(); setcolor(WHITE); outtextxy(getmaxx()/2,getmaxy()/2-50,"***ORIH3D***"); outtextxy(getmaxx()/2,getmaxy()/2,"(c)1997 Henrik Tingstr”m"); delay(40); } cls(BLACK); for(i=0;i<50;i++) { ball(); stars(); delay(40); } } void game_on(void) { int ch2 = ch; while(kbhit()) ch=getch(); setcolor(WHITE); if(ch == 13) { while(ch == 13) { setcolor(WHITE); outtextxy(getmaxx()/2,getmaxy()/2-20,"Pause"); while(kbhit()) ch = getch(); } setcolor(BLACK); outtextxy(getmaxx()/2,getmaxy()/2-20,"Pause"); } if(ch != 75 && ch != 77 && ch != 48 && ch != 32 && ch != 80 && ch != 72) ch = ch2; setcolor(BLACK); setfillstyle(1,BLACK); rita_skepp(); if(ch == 75 && shipx > 50) // pil v„nster { shipx -=0.7; } else if(ch == 77 && shipx < getmaxx()-50) // pil h”ger { shipx +=0.7; } else if(ch == 72 && shipy > 50) // pil upp { shipy -=0.7; } else if(ch == 80 && shipy < getmaxy()-50) // pil ner { shipy +=0.7; } else if(ch == 32 && skott == 0) // skott (mellanslag) { vink=14; skott = 1; skottx = shipx; skotty = getmaxy(); // ch = ch2; } // else if(ch == 32 && skott > 1) // ch = ch2; setcolor(BLUE); setfillstyle(8,LIGHTBLUE); rita_skepp(); } void starta(void) { setcolor(BLACK); setfillstyle(1,BLACK); rita_skepp(); start++; shipx = getmaxx()/2; shipy = getmaxy()/2; setcolor(WHITE); outtextxy(getmaxx()/2,getmaxy()/2,"Be Ready"); setcolor(BLUE); setfillstyle(8,LIGHTBLUE); rita_skepp(); if(start > antalkill-1) { hast = hast+60; cls(BLACK); ledtext(); start = 0; } } void ball(void) { if(ballx < getmaxx()/2-10 && ballh > 0 && ballh < 0.2) ballxv = 1; if(ballx > getmaxx()/2+10 && ballh > 0 && ballh < 0.2) ballxv = 0; if(bally < getmaxy()/2-10 && ballh > 0 && ballh < 0.2) ballyv = 1; if(bally > getmaxy()/2+10 && ballh > 0 && ballh < 0.2) ballyv = 0; if(ballh > 2) ballhv=0; if(ballh < -2) ballhv=1; if(ballhv == 1) ballh+=0.02; if(ballhv == 0) ballh-=0.02; /* float slask; if(ballh<0) slask=ballh*-1; else slask=ballh; if(ballxv == 1) ballx+=slask; if(ballxv == 0) ballx-=slask; if(ballyv == 1) bally+=slask; if(ballyv == 0) bally-=slask; */ if(kill == 0) { ballx=getmaxx()/2; bally=getmaxy()/2; } // putpixel(ballx,bally,random(13)+1); } void meteorer(void) { int i = 0; int j, k, rod; int ant=level; if(ant > antal-1) ant=antal; rod=0; while(i < ant) { if(start == 0) { setcolor(BLACK); line(shipx-5,shipy,shipx-1,shipy); line(shipx+1,shipy,shipx+5,shipy); line(shipx,shipy-5,shipx,shipy-1); line(shipx,shipy+1,shipx,shipy+5); if(kill == 0) game_on(); setcolor(LIGHTBLUE); line(shipx-2,shipy,shipx-1,shipy); line(shipx+1,shipy,shipx+2,shipy); line(shipx,shipy-2,shipx,shipy-1); line(shipx,shipy+1,shipx,shipy+2); setcolor(BLUE); line(shipx-5,shipy,shipx-3,shipy); line(shipx+3,shipy,shipx+5,shipy); line(shipx,shipy-5,shipx,shipy-3); line(shipx,shipy+3,shipx,shipy+5); } if(skott > 1) shoots(); if(shipx > meteor[i][0]-(stor[i]+1) && shipx < meteor[i][0]+(stor[i]+1) && shipy > meteor[i][1]-(stor[i]+1) && shipy < meteor[i][1]+(stor[i]+1) && skott > 1) { setcolor(BLACK); setfillstyle(1,BLACK); if(meteor[i][2]==0) { fillellipse(meteor[i][0],meteor[i][1],stor[i]+2,stor[i]+2); line(meteor[i][0]-stor[i]*4,meteor[i][1],meteor[i][0]+stor[i]*4,meteor[i][1]); } else if(meteor[i][2] <3) fillellipse(meteor[i][0],meteor[i][1],stor[i]+5,stor[i]); else fillellipse(meteor[i][0],meteor[i][1],stor[i]+1,stor[i]); if(farg[i] == YELLOW) { poang+=10; } else if(farg[i] == LIGHTRED) { poang+=40; } else if(farg[i] == LIGHTGREEN) { if(liv<10) liv++; poang+=40; } else if(farg[i] == LIGHTBLUE) { poang-=40; liv--; cls(BLACK); } else { poang+=80; } kill_meteor(i); stor[i]=0; } if(blow[i][5][1] != 0) { blow_meteor(i); meteor[i][4]=getmaxx()+50; } if(stor[i]!=0) { setcolor(BLACK); setfillstyle(1,BLACK); if(meteor[i][2]==0) { fillellipse(meteor[i][0],meteor[i][1],stor[i]+2,stor[i]+2); line(meteor[i][0]-stor[i]*4,meteor[i][1],meteor[i][0]+stor[i]*4,meteor[i][1]); } else if(meteor[i][2] <3) fillellipse(meteor[i][0],meteor[i][1],stor[i]+3,stor[i]+3); else fillellipse(meteor[i][0],meteor[i][1],stor[i]+1,stor[i]); if(meteor[i][1] > getmaxy()-stor[i]-20 || meteor[i][1] < stor[i]+40 || meteor[i][0] < stor[i]+30 || meteor[i][0] > getmaxx()-stor[i]-30) { if(blow[i][5][1] == 0) nollstall(i); } stor[i]+=0.04;//level*0.01; meteor[i][4]*=(stor[i]*0.007)+1; meteor[i][3]+=(ballh/2)*(stor[i]*0.008); meteor[i][0]=(meteor[i][4]*cos(meteor[i][3])+getmaxx()/2);//+ballx); meteor[i][1]=(meteor[i][4]*sin(meteor[i][3])+getmaxy()/2);//+bally); k=random(100); if(k==0 && meteor[i][2] == 1 && farg[i]==LIGHTRED && stor[i]>2) meteor[i][2]=0; if(k==0 && meteor[i][2] == 2 && farg[i]==LIGHTRED && stor[i]>1) meteor[i][2]=0; if(meteor[i][2] == 0) { rod=1; setcolor(farg[i]-8); setfillstyle(1,farg[i]); fillellipse(meteor[i][0],meteor[i][1],stor[i]+2,stor[i]+2); ellipse(meteor[i][0],meteor[i][1],0,360,stor[i]+1,stor[i]); line(meteor[i][0]-stor[i]*4,meteor[i][1],meteor[i][0]+stor[i]*4,meteor[i][1]); if(stor[i] > 3 && kill == 0) { j=random(30); setcolor(LIGHTGRAY); rectangle(0,16,getmaxx(),getmaxy()); rectangle(2,18,getmaxx()-2,getmaxy()-2); setcolor(WHITE); rectangle(1,17,getmaxx()-1,getmaxy()-1); ellipse(meteor[i][0],meteor[i][1],0,360,random(2)+1,random(2)+1); line(meteor[i][0]-stor[i],meteor[i][1],meteor[i][0]+stor[i],meteor[i][1]); meteor[i][4]+=stor[i]; if(j==0) { cls(BLUE); delay(100); cls(LIGHTBLUE); delay(100); cls(WHITE); delay(100); cls(LIGHTBLUE); delay(100); cls(BLUE); delay(100); cls(BLACK); ledtext(); setcolor(WHITE); outtextxy(getmaxx()/2,getmaxy()/2+50,"Shoot Down the Enemy! (Red Ships)"); kill_ship(); } } } else if(meteor[i][2] == 1) { setcolor(farg[i]-8); setfillstyle(1,farg[i]-8); //8 fillellipse(meteor[i][0],meteor[i][1],stor[i],stor[i]+ballh); } else if(meteor[i][2] == 2) { setcolor(farg[i]-8); setfillstyle(1,farg[i]); fillellipse(meteor[i][0],meteor[i][1],stor[i]+ballh,stor[i]); } else if(meteor[i][2] == 3) { setcolor(BLACK); setfillstyle(6,BROWN); fillellipse(meteor[i][0],meteor[i][1],stor[i]+1,stor[i]); } } i++; } while(ant < antal) { if(start == 0) { setcolor(BLACK); line(shipx-5,shipy,shipx-1,shipy); line(shipx+1,shipy,shipx+5,shipy); line(shipx,shipy-5,shipx,shipy-1); line(shipx,shipy+1,shipx,shipy+5); if(kill == 0) game_on(); setcolor(LIGHTBLUE); line(shipx-2,shipy,shipx-1,shipy); line(shipx+1,shipy,shipx+2,shipy); line(shipx,shipy-2,shipx,shipy-1); line(shipx,shipy+1,shipx,shipy+2); setcolor(BLUE); line(shipx-5,shipy,shipx-3,shipy); line(shipx+3,shipy,shipx+5,shipy); line(shipx,shipy-5,shipx,shipy-3); line(shipx,shipy+3,shipx,shipy+5); } if(rod == 1) skott=2; if(skott > 1) shoots(); ant++; } if(skott >0) skott++; if(skott > 10) skott = 0; } void blow_meteor(int i) { setcolor(BLACK); setfillstyle(1,BLACK); fillellipse(blow[i][0][0],blow[i][0][1],2,1); fillellipse(blow[i][1][0],blow[i][1][1],2,1); fillellipse(blow[i][2][0],blow[i][2][1],2,1); fillellipse(blow[i][3][0],blow[i][3][1],2,1); fillellipse(blow[i][4][0],blow[i][4][1],2,1); blow[i][0][0]-=random(2); blow[i][0][1]-=random(4);//stor[i]+hast; blow[i][1][0]-=random(2); blow[i][1][1]+=random(4); blow[i][2][0]+=0; blow[i][2][1]+=1; blow[i][3][0]+=random(2); blow[i][3][1]+=random(4); blow[i][4][0]+=random(3); blow[i][4][1]-=random(3);//(stor[i]+hast)/2; if(blow[i][2][1] > blow[i][5][0]+30) { nollstall_blow(i); } else { setcolor(BLACK); setfillstyle(6,farg[i]-8);//random(3)+11); fillellipse(blow[i][0][0],blow[i][0][1],2,1); fillellipse(blow[i][1][0],blow[i][1][1],2,1); fillellipse(blow[i][2][0],blow[i][2][1],2,1); fillellipse(blow[i][3][0],blow[i][3][1],2,1); fillellipse(blow[i][4][0],blow[i][4][1],2,1); } } void rita_kill(void) { start = 1; kill = 0; for(int i=0;i 3) meteor[i][2] = 3; stor[i] = random(svart); stor[i]++; if(stor[i] > 10) stor[i] = 7; if(stor[i] < 2) farg[i] = LIGHTGREEN; else if(stor[i] == 2) farg[i] = LIGHTCYAN; else if(stor[i] == 3) farg[i] = LIGHTMAGENTA; else if(stor[i] == 4) farg[i] = LIGHTRED; else farg[i] = LIGHTBLUE; if(meteor[i][2] == 0) farg[i] = LIGHTRED; if(meteor[i][2] == 3) farg[i] = YELLOW; stor[i]=1; } void kill_meteor(int i) { blow[i][0][0] = meteor[i][0]-2; blow[i][0][1] = meteor[i][1]-2; blow[i][1][0] = meteor[i][0]-2; blow[i][1][1] = meteor[i][1]+2; blow[i][2][0] = meteor[i][0]; blow[i][2][1] = meteor[i][1]; blow[i][3][0] = meteor[i][0]+2; blow[i][3][1] = meteor[i][1]+2; blow[i][4][0] = meteor[i][0]+2; blow[i][4][1] = meteor[i][1]-2; blow[i][5][0] = meteor[i][1]; blow[i][5][1] = 1; meteor[i][1] = getmaxy()+25; if(kill == 0 && start == 0) ledtext(); } void shoots(void) { setcolor(WHITE); line(shipx-5,shipy,shipx-1,shipy); line(shipx+1,shipy,shipx+5,shipy); line(shipx,shipy-5,shipx,shipy-1); line(shipx,shipy+1,shipx,shipy+5); } void kill_ship(void) { // ch = 80; liv--; kill = 2; if(liv > -1) hast = hast-60; } void rita_skepp(void) { //nedre bar(shipx-2,getmaxy()-2,shipx+2,getmaxy()-13); line(shipx,getmaxy()-2,shipx,getmaxy()-16); //”vre bar(shipx-2,18,shipx+2,28); line(shipx,18,shipx,31); //v„nstra bar(2,shipy-2,13,shipy+2); line(2,shipy,13,shipy); //h”gra bar(getmaxx()-2,shipy-2,getmaxx()-13,shipy+2); line(getmaxx()-2,shipy,getmaxx()-13,shipy); } void stars(void) { int slask; int i = 0; while(i < antstars) { slask=star[i][2]; putpixel(star[i][0],star[i][1],BLACK); if(slask==5) { putpixel(star[i][0]-1,star[i][1],BLACK); putpixel(star[i][0]+1,star[i][1],BLACK); putpixel(star[i][0],star[i][1]-1,BLACK); putpixel(star[i][0],star[i][1]+1,BLACK); } if(slask>5) { putpixel(star[i][0]-1,star[i][1],BLACK); putpixel(star[i][0]+1,star[i][1],BLACK); putpixel(star[i][0],star[i][1]-1,BLACK); putpixel(star[i][0],star[i][1]+1,BLACK); putpixel(star[i][0]-1,star[i][1]-1,BLACK); putpixel(star[i][0]+1,star[i][1]+1,BLACK); putpixel(star[i][0]+1,star[i][1]-1,BLACK); putpixel(star[i][0]-1,star[i][1]+1,BLACK); putpixel(star[i][0]-2,star[i][1],BLACK); putpixel(star[i][0]+2,star[i][1],BLACK); putpixel(star[i][0],star[i][1]-2,BLACK); putpixel(star[i][0],star[i][1]+2,BLACK); putpixel(star[i][0]-2,star[i][1]-1,BLACK); putpixel(star[i][0]+2,star[i][1]-1,BLACK); putpixel(star[i][0]+1,star[i][1]-2,BLACK); putpixel(star[i][0]+1,star[i][1]+2,BLACK); } if(level == -1) { if(star[i][0] < -5 || star[i][0] > getmaxx()+5 || star[i][1] < -5 || star[i][1] > getmaxy()+5) { nollstall_star_init(i); slask=0; } } else { if(star[i][0] < 20 || star[i][0] > getmaxx()-20 || star[i][1] < 40 || star[i][1] > getmaxy()-30) { nollstall_star_init(i); slask=0; } } star[i][2]+=0.05; star[i][3]*=(star[i][2]*0.002+1); star[i][4]+=(ballh/2)*(star[i][2]*0.003); star[i][0]=((star[i][3])*cos(star[i][4])+ballx); star[i][1]=((star[i][3])*sin(star[i][4])+bally); if(slask == 0) putpixel(star[i][0],star[i][1],DARKGRAY);//LIGHTBLUE else if(slask == 1) putpixel(star[i][0],star[i][1],DARKGRAY);//LIGHTRED else if(slask == 2) putpixel(star[i][0],star[i][1],LIGHTGRAY);//LIGHTGRAY else if(slask == 3) putpixel(star[i][0],star[i][1],LIGHTGRAY); //LIGHTCYAN else if(slask == 4) putpixel(star[i][0],star[i][1],WHITE); //YELLOW else if(slask == 5) { putpixel(star[i][0],star[i][1],WHITE); //YELLOW putpixel(star[i][0]-1,star[i][1],LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0]+1,star[i][1],LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0],star[i][1]-1,LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0],star[i][1]+1,LIGHTGRAY); //LIGHTCYAN } else { putpixel(star[i][0],star[i][1],WHITE); //YELLOW putpixel(star[i][0]-1,star[i][1],WHITE); //LIGHTCYAN putpixel(star[i][0]+1,star[i][1],WHITE); //LIGHTCYAN putpixel(star[i][0],star[i][1]-1,WHITE); //LIGHTCYAN putpixel(star[i][0],star[i][1]+1,WHITE); //LIGHTCYAN putpixel(star[i][0]-1,star[i][1]-1,LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0]+1,star[i][1]+1,LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0]+1,star[i][1]-1,LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0]-1,star[i][1]+1,LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0]-2,star[i][1],LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0]+2,star[i][1],LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0],star[i][1]-2,LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0],star[i][1]+2,LIGHTGRAY); //LIGHTCYAN putpixel(star[i][0]-2,star[i][1]-1,DARKGRAY); //LIGHTCYAN putpixel(star[i][0]+2,star[i][1]-1,DARKGRAY); //LIGHTCYAN putpixel(star[i][0]+1,star[i][1]-2,DARKGRAY); //LIGHTCYAN putpixel(star[i][0]+1,star[i][1]+2,DARKGRAY); //LIGHTCYAN } i++; } } void nollstall_star_init(int i) { star[i][0] = random(getmaxx()-40)+20; star[i][1] = random(getmaxy()-40)+20; star[i][2] = 0; star[i][3] = random(getmaxx()/2)+30;//+ballh; // halv varv=3.14.... // helt varv=6.283185..... star[i][4] = random(83185)*0.00001; star[i][4]+=random(72)+1; } void ledtext(void) { setbkcolor(BLACK); // skriver ut ledtext setcolor(BLUE); rectangle(0,16,getmaxx(),getmaxy()); rectangle(2,18,getmaxx()-2,getmaxy()-2); setcolor(LIGHTBLUE); rectangle(1,17,getmaxx()-1,getmaxy()-1); for(int i=0, j=20;i