打砖块源代码_第1页
打砖块源代码_第2页
打砖块源代码_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <graphics.h> #include <stdio.h> #include vconio.h> #inelude <math.h> #inelude <time.h> /#inelude <string.h> /include <afx.h> #define row 5 #define colunm 20 #define CMD_UP 1 #define CMD_DOWN 2 #define CMD_LEFT 4 #define CMD_RIGHT 8int arowcolunm=0; int

2、 ballx,bally; / 小球的坐标 int boardx,boardy; / 木板的坐标 bool starting= false ;/ 判断是否小球正在运动int addx=1;int addy=-1; /小球坐标加的量bool iscatch= false ; /判断是否木板捕捉到小球voidDispatchCommand( int _cmd)(setfillcolor(BLACK); solidrecta ngle(boardx,boardy,boardx+60,boardy+10);if (_cmd & CMD_LEFT) (if (iscatch) (srand(ti

3、me(NULL); addx=rand()%2+10; setfillcolor(BLACK); solidcircle(ballx,bally,10); ballx- =10;setfillcolor(LIGHTBLUE); / solidcircle(ballx,bally, 10); printf( ” 减 nH);boardx=1;if (_cmd & CMD_RIGHT) (if (iscatch)srand(time(NULL); addx=rand()%2+10; setfillcolor (BLACK); solidcircle(ballx,bally,10); bal

4、lx+=10;setfillcolor(LIGHTBLUE); solidcircle(ballx,bally,10);printf('加n”);)boardx+=1;)if (boardx<=10) boardx=10;if (boardx>=380) boardx=380;setfillcolor(LIGHTMAGENTA);/LIGHTRED/CYAN solidrectangle(boardx,boardy,boardx+60,boardy4-10);int GetCommand()int c = 0;if (GetAsyncKeyState( if (GetAsy

5、ncKeyState( if (GetAsyncKeyState( if/键盘控制TV ) & 0x8000) c |= CMD_LEFT; D ) & 0x8000) c |= CMD_RIGHT;W) & 0x8000) c |= CMD_UP;S ) & 0x8000) c |= CMD_DOWN;(GetAsyncKeyState( return c;)/画砖块void drawrectangle()setfillcolor(LIGHTCYAN); YELLOW/MAGENTA for (int j=0;j<row;j+) for (int i=0

6、;i<colunm;i+)if (aji=O)solidrectangle(i*22,j*12,i*22+20,j*12+10);左上右下)void init()boardx=220-30;boardy=600-10;/ 小球中心坐标 ballx=220; bally=580;drawrecta ngle();setfillcolor(LIGHTMAGENTA);/LIGHTRED/CYANsolidrectangle(boardx,boardy,boardx+60,boardy+10); / 初始化木板 setfillcolor(LIGHTBLUE);solidcircle(ballx

7、,bally,10); / 初始化小球)void drawball()iscatch= false ;setfillcolor(BLACK); / 用于擦出上一次的小球 solidcircle(ballx,bally,10);Begi nBatchDraw();if (ballx>=430)addx=-1;)if (ballx<=0)addx=1;)if (bally<=10) addy=-1*addy;for (int i=0;iv5;i+)int flag0=0;for (int j=0;j<20;j+)/砖块坐标(宽咼)int currentx=j*22; / 左

8、int currenty=i*12; / 上if (aij=0 && ballx<=currentx+30 && ballx>=currentx-10 && bally- currenty<=20 &&bally>=currenty) / 判断小球碰到哪个砖块 < printf(”an”);addy=-1*addy;addx=-1*addx;aij=1:flag0=1;消除原来的砖块setfillcolor(BLACK);solidrectangle(currentx,currenty,current

9、x+20,currenty+10); break ;)if (flagO)break ;)if (starting && ballx<=boardx+70 && ballx>=boardx-10 && boardy-bally<=10 &&boardy-bally>=5) /判断木板是否接到小球printf( ” 接住 H); iscatch= true ;addy=-1*addy;)starting= true ;ballx+=addx; /更新小球坐标bally+=addy; setfillcolor(

10、LIGHTBLUE);solidcircle(ballx,bally,10);FlushBatchDraw();Sleep(5);)void play()char c;while (1)drawrectangle(); / 画砖块/if(kbhit()/c=GetCommand();/ 键盘控制DispatchCommand(c); / 移动控制/drawball(); / 画球if (bally>590)/setcolor(RED);/outtextxy(200,300,LPCTSTR(,GAMEOVERM);/NULLMessageBox(GetHWnd(),TEXT(H GAME

11、OVER ” ),TEXT("提示” ),MB_OK);break ;)/*cleardevice();Sleep(5000);*/)void main()in itgraph(440,600,0);/SHOWCONSO 不显示控制台init();setcolor(WHITE);const char* sh= ”请按空格键开始游戏";/LPCTSTR *p = (LPCTSTR *)sh;outtextxy(140,300,LPCTSTR(sh);getch();if (GetAsyncKeyState(VK_SPACE)cleardevice();piay();/Sleep(5000);/Sleep(5000);/cleardevice();/Sleep(5000);/setcolor(RED);/outtextxy(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论