Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.08 KB | None | 0 0
  1. #include<conio.h>
  2. #include<stdio.h>
  3. #include<iostream>
  4. #include<graphics.h>
  5. #include<dos.h>
  6. #include<stdlib.h>
  7. #include<string.h>
  8. #include<time.h>
  9. #define RADIUS 4
  10. #define SPEED 0
  11. #define BALLCOLOR 14
  12. #define BACKCOLOR 0
  13. #define OCOLOR 12
  14. #define PICKCOLOR 10
  15.  
  16. using namespace std;
  17.  
  18. struct ball{
  19. int x, y, dx, dy;
  20. }nball[60];
  21.  
  22. int HighScore[10];
  23. char* score_str = new char[10];
  24.  
  25. void vatthe(int xleft, int xright, int ytop, int ybot, int color);
  26. void pick(int x, int y, int color);
  27. void getHighScore();
  28. void checkScore(int score);
  29. void showHighScore();
  30. void run_pinball();
  31. void giaodien();
  32. void getHighScore();
  33.  
  34. void vevatthe(int xleft, int xright, int ytop, int ybot, int color)
  35. {
  36. setfillstyle(1, color);
  37. bar(xleft,ytop,xright,ybot);
  38. }
  39.  
  40. void pick(int x, int y, int color)
  41. {
  42. setcolor(0);
  43. int point[] = {x, y-10, x, y+10, x+30, y, x, y-10};
  44. setfillstyle(1,color);
  45. fillpoly(4,point);
  46. }
  47.  
  48. //===============Score===============
  49. void getHighScore()
  50. {
  51. FILE *f;
  52. f = fopen("highscore.txt", "w");
  53. for (int i=0;i<10;i++){
  54. fprintf(f,"%d",HighScore[i]); //ghi diem ra file
  55. fputs("\n",f);
  56. }
  57. fclose(f);
  58. }
  59. void checkScore(int score)
  60. {
  61. for(int i=0;i<10;i++){
  62. if(score>0 && score>=HighScore[i]){
  63. settextstyle(1,0,2);
  64. for(int j=0;j<50;j++){
  65. if(j%2==0){
  66. setcolor(14);
  67. outtextxy(150,120,"HIGH SCORE");
  68. }else{
  69. setcolor(9);
  70. outtextxy(150,120,"HIGH SCORE");
  71. }
  72. delay(5);
  73. }
  74. //=============================
  75. for(int j=9;j>i;j--)
  76. HighScore[j]=HighScore[j-1];
  77. HighScore[i]=score;
  78. break;
  79. }
  80. }
  81. getHighScore();
  82. }
  83. void showHighScore()
  84. {
  85. FILE *f;
  86. f = fopen("highscore.txt", "r");
  87. char ch[20];
  88. int x=130, y=100, i=0;
  89. settextstyle(4,0,2);
  90. while(!feof(f)){
  91. if(fgets(ch,20,f)!=NULL){
  92. y+=50;i++;
  93. sprintf(score_str,"%d. %s",i,ch);
  94. outtextxy(x,y,score_str);
  95. }
  96. if(i==5){
  97. x=400;y=100;
  98. }
  99. }
  100. fclose(f);
  101. }
  102.  
  103. void run_pinball()
  104. {
  105. //==================Level===================
  106. cleardevice();
  107. settextstyle(2,1,9);
  108. setcolor(10);
  109. outtextxy(430,130,"Chose Level");
  110. settextstyle(2,1,8);
  111. outtextxy(342,262,"Easy");
  112. outtextxy(393,312,"Medium");
  113. outtextxy(339,362,"Hard");
  114. int x=230, y=250, ch;
  115. int score=-1, flag=0, lv;
  116. do{
  117. pick(x,y,PICKCOLOR);
  118. if(GetAsyncKeyState(VK_DOWN) && y<350){
  119. pick(x,y,0);
  120. y+=50;
  121. pick(x,y,PICKCOLOR);
  122. }
  123. if(GetAsyncKeyState(VK_UP) && y>250){
  124. pick(x,y,0);
  125. y-=50;
  126. pick(x,y,PICKCOLOR);
  127. }
  128. delay(80);
  129. }while(!GetAsyncKeyState(VK_RETURN));
  130.  
  131. int MAXBALLS;
  132. if(y==250){
  133. MAXBALLS=20;lv=1;
  134. }
  135. if(y==300){
  136. MAXBALLS=40;lv=2;
  137. }
  138. if(y==350){
  139. MAXBALLS=60;lv=3;
  140. }
  141. cleardevice();
  142.  
  143. //======================Giao dien==========================
  144. setcolor(15);
  145. rectangle(0, 0, 501, 371); //ve khung
  146. setfillstyle(SOLID_FILL,15);
  147. settextstyle (4,0,1);
  148. int a[] = {15,390, 30,390, 30,385, 45,395, 30,405, 30,400, 15,400, 15,390};
  149. fillpoly (8,a); outtextxy (55,383,"Right");
  150. int b[] = {15,440, 30,430, 30,435, 45,435, 45,445, 30,445, 30,450, 15,440};
  151. fillpoly (8,b);outtextxy (55,430,"Left");
  152. int c[] = {160,410, 160,395, 155,395, 165,380, 175,395, 170,395, 170,410, 160,410};
  153. fillpoly (8,c);outtextxy (185,383,"Up");
  154. int d[] = {160,430, 160,445, 155,445, 165,460, 175,445, 170,445, 170,430, 160,430};
  155. fillpoly(8,d);outtextxy (185,430,"Down");
  156. bar (300,380,420,410);setcolor(0);settextstyle(1,0,1);setbkcolor(15);outtextxy(310,385,"SPACE");
  157. setbkcolor(0);setcolor(15);settextstyle (4,0,1);outtextxy(430,382,"Pause/Resume");
  158. bar (300,427,420,457);setcolor(0);settextstyle(1,0,1);setbkcolor(15);outtextxy(330,432,"ESC");
  159. setbkcolor(0);setcolor(15);settextstyle (4,0,1);outtextxy(430,429,"End Game");
  160. outtextxy(525,50,"Score");
  161.  
  162. //======================Toa do======================
  163. for (int i=0; i<MAXBALLS; i++){ //tao vi tri random
  164. do{
  165. nball[i].dx = rand()%3 - 1;
  166. }while(nball[i].dx == 0);
  167. do{
  168. nball[i].dy = rand()%3 - 1;
  169. }while(nball[i].dy == 0);
  170. do{
  171. nball[i].x = rand()%(500-RADIUS);
  172. }while(nball[i].x < 2 + RADIUS);
  173. do{
  174. nball[i].y = rand()%(370-RADIUS);
  175. }while(nball[i].y < 2 + RADIUS);
  176. }
  177.  
  178. int xleft,xright,ytop,ybot,kc; //toa do vat the
  179. xleft = 240; xright = 260;
  180. ytop = 175; ybot = 195;
  181.  
  182. //========================Run========================
  183. do{
  184. setcolor(BALLCOLOR);
  185. setfillstyle(SOLID_FILL, BALLCOLOR);
  186. for (int i=0; i<MAXBALLS; i++)
  187. fillellipse(nball[i].x, nball[i].y, RADIUS, RADIUS);
  188. vevatthe(xleft,xright,ytop,ybot,OCOLOR);
  189.  
  190. //===================Vat the====================
  191. if(GetAsyncKeyState(VK_LEFT) && xleft>2){
  192. vevatthe(xleft,xright,ytop,ybot,0);
  193. xleft-=2;
  194. xright-=2;
  195. vevatthe(xleft,xright,ytop,ybot,OCOLOR);
  196. }
  197. if(GetAsyncKeyState(VK_RIGHT) && xright<500){
  198. vevatthe(xleft,xright,ytop,ybot,0);
  199. xright+=2;
  200. xleft+=2;
  201. vevatthe(xleft,xright,ytop,ybot,OCOLOR);
  202. }
  203. if(GetAsyncKeyState(VK_UP) && ytop>2){
  204. vevatthe(xleft,xright,ytop,ybot,0);
  205. ytop-=2;
  206. ybot-=2;
  207. vevatthe(xleft,xright,ytop,ybot,OCOLOR);
  208. }
  209. if(GetAsyncKeyState(VK_DOWN) && ybot<370){
  210. vevatthe(xleft,xright,ytop,ybot,0);
  211. ybot+=2;
  212. ytop+=2;
  213. vevatthe(xleft,xright,ytop,ybot,OCOLOR);
  214. }
  215. delay(SPEED);
  216.  
  217. //=================Score==================
  218. setcolor(15);
  219. if(flag%60==0){
  220. score++;
  221. sprintf(score_str,"%d",score);
  222. settextstyle(4,0,1);
  223. outtextxy(550,80,score_str);
  224. }
  225. flag+=lv;
  226. //====================Move====================
  227. for (int i=0; i<MAXBALLS; i++){
  228. //==============Game over===========
  229. if((xleft==nball[i].x+RADIUS&&nball[i].y>ytop&&nball[i].y-RADIUS<=ybot) ||(xright==nball[i].x-RADIUS&&nball[i].y-RADIUS<ybot&&nball[i].y+RADIUS>=ytop) ||(ytop==nball[i].y+RADIUS&&nball[i].x<xright&&nball[i].x+RADIUS>=xleft) ||(ybot==nball[i].y-RADIUS&&nball[i].x>xleft&&nball[i].x-RADIUS<=xright))
  230. {
  231. do{
  232. setcolor(10);settextstyle(1,0,4);
  233. outtextxy(90,145,"GAME OVER");
  234. checkScore(score);
  235. delay(350);
  236. setcolor(10);settextstyle(1,0,3);
  237. outtextxy(170,220,"Play Again");
  238. outtextxy(170,270,"Quit");
  239. x=130;y=230;
  240. do{
  241. pick(x,y,PICKCOLOR);
  242. if(GetAsyncKeyState(VK_DOWN) && y<280){
  243. pick(x,y,0);
  244. y+=50;
  245. pick(x,y,PICKCOLOR);
  246. }
  247. if(GetAsyncKeyState(VK_UP) && y>230){
  248. pick(x,y,0);
  249. y-=50;
  250. pick(x,y,PICKCOLOR);
  251. }
  252. delay(50);
  253. }while(!GetAsyncKeyState(VK_RETURN));
  254. delay(20);
  255. if(y==230) run_pinball();
  256. else giaodien();
  257. }while(!GetAsyncKeyState(VK_ESCAPE));
  258. }
  259. //===========Pause==========
  260. if(GetAsyncKeyState(VK_SPACE)){
  261. do{
  262. setcolor(15);
  263. outtextxy(520,200,"Pause");
  264. delay(100);
  265. }while(!GetAsyncKeyState(VK_SPACE));
  266. delay(80);
  267. setcolor(0);
  268. outtextxy(520,200,"Pause");
  269. }
  270. //============Run============
  271. setcolor(BACKCOLOR);
  272. setfillstyle(1, BACKCOLOR);
  273. fillellipse(nball[i].x, nball[i].y, RADIUS, RADIUS);
  274. nball[i].x += nball[i].dx;
  275. nball[i].y += nball[i].dy;
  276. if(nball[i].x < RADIUS +1 || nball[i].x > 500 - RADIUS){
  277. nball[i].dx = -nball[i].dx;
  278. nball[i].x += 2 * nball[i].dx; //dap tuong
  279. }
  280. if (nball[i].y < RADIUS + 1 || nball[i].y > 370 - RADIUS){
  281. nball[i].dy = -nball[i].dy;
  282. nball[i].y += 2 * nball[i].dy;
  283. }
  284. }
  285. }while(!GetAsyncKeyState(VK_ESCAPE));
  286. delete score_str;
  287. }
  288.  
  289. void giaodien()
  290. {
  291. cleardevice();
  292. //initScore();
  293. setcolor(10);settextstyle(2,1,9);
  294. outtextxy(445,130,"Dodge The Balls");
  295. settextstyle(2,1,8);
  296. outtextxy(315,262,"Play");
  297. outtextxy(420,312,"High Score");
  298. outtextxy(339,362,"About");
  299. outtextxy(312,412,"Quit");
  300. int x=210, y=250;
  301. do{
  302. pick(x,y,PICKCOLOR);
  303. if(GetAsyncKeyState(VK_DOWN) && y<400){
  304. pick(x,y,0);
  305. y+=50;
  306. pick(x,y,PICKCOLOR);
  307. }
  308. if(GetAsyncKeyState(VK_UP) && y>250){
  309. pick(x,y,0);
  310. y-=50;
  311. pick(x,y,PICKCOLOR);
  312. }
  313. delay(80);
  314. }while(!GetAsyncKeyState(VK_RETURN));
  315.  
  316. setcolor(10);
  317. if(y==250) run_pinball();
  318. if(y==300){
  319. cleardevice();
  320. do{
  321. settextstyle(10,0,6);setcolor(15);
  322. outtextxy(110,20,"HIGH SCORE");
  323. showHighScore();
  324. delay(50);
  325. }while(!GetAsyncKeyState(VK_SPACE));
  326. giaodien();
  327. }
  328. if(y==350){
  329. cleardevice();
  330. do{
  331. settextstyle(10,0,6);setcolor(15);
  332. outtextxy(210,20,"ABOUT");
  333. settextstyle(3,0,3);setcolor(9);
  334. outtextxy(20,100,"- DE TAI:");
  335. settextstyle(4,0,3);setcolor(10);
  336. outtextxy(60,140,"GAME \"Dodge The Balls\"");
  337. settextstyle(3,0,3);setcolor(9);
  338. outtextxy(20,200,"- SINH VIEN THUC HIEN:");
  339. settextstyle(4,0,3);setcolor(12);
  340. outtextxy(60,240,"NGUYEN NGOC HA - 1581310059");
  341. settextstyle(3,0,3);setcolor(9);
  342. outtextxy(20,300,"- GIANG VIEN HUONG DAN:");
  343. settextstyle(4,0,3);setcolor(14);
  344. outtextxy(60,340,"THAY NGO NGOC THANH");
  345. settextstyle(1,0,3);setcolor(13);
  346. outtextxy(40,400,"TRUONG DAI HOC DIEN LUC");
  347. delay(80);
  348. }while(!GetAsyncKeyState(VK_SPACE));delay(80);
  349. giaodien();
  350. }
  351. if(y==400) closegraph();
  352. }
  353.  
  354. int main()
  355. {
  356. int gr_drive = DETECT, gr_mode;
  357. initgraph(&gr_drive, &gr_mode, "");
  358. srand(time(NULL));
  359. giaodien();
  360. getch();
  361. closegraph();
  362. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement