#include < stdio.h > #include < conio.h > #include < time.h > #include " consoleout.h " #pragma comment(lib,"consoleout.lib") // 板的当前位置 int g_nBarX = 4 ; int g_nBarY = 20 ; // 球的当前位置 int g_nBallX = g_nBarX + 4 ; int g_nBallY = g_nBarY - 2 ; // 速度(g_nBallVx,g_nBallVy) int g_nBallVx = 1 ; int g_nBallVy = - 1 ; // 功能:移动溜板 void BarMove( char cC) ... { static int nOldX = g_nBarX; static int nOldY = g_nBarY; if(cC == 'a'||cC == 'A') ...{ g_nBarX = nOldX - 5; } else if(cC == 'd'||cC == 'D') ...{ g_nBarX= nOldX + 5; } //防止出右边界 if(g_nBarX > 58) ...{ g_nBarX = 58; } //防止出左边界 if(g_nBarX < 2) ...{ g_nBarX = 2; } CreateSmWindow("",nOldX,nOldY,10,3,0,0); CreateSmWindow("",g_nBarX,g_nBarY,10,3,14,0); nOldX = g_nBarX;} // 功能:绘制小球的弹动 void BallMove() ... { static int nOldX = g_nBallX; static int nOldY = g_nBallY; if(g_nBallX == 2||g_nBallX == 76) ...{ g_nBallVx = -g_nBallVx; } if(g_nBallY == 1||g_nBallY== 26) ...{ g_nBallVy = -g_nBallVy; } g_nBallX = nOldX + g_nBallVx; g_nBallY = nOldY + g_nBallVy; MoveCursorTo(nOldX,nOldY); printf(" "); MoveCursorTo(g_nBallX,g_nBallY); printf("●"); nOldX = g_nBallX; nOldY = g_nBallY; MoveCursorTo(0,29); printf("球:位置:(%d,%d)",g_nBallX,g_nBallY); sleep(100);} // 功能:判断球与板的位置,如果碰到就反弹球 // 返回值:改变运行方向 void Pop() ... { //判断小球落在板上 if(g_nBarX < g_nBallX && g_nBallX < g_nBarX + 20 && g_nBallY > g_nBarY - 2) ...{ g_nBallVy = -g_nBallVy; } while(g_nBallY>20) ...{ printf("球掉了 "); break; }} void MainLoop() ... { int i; while(1) ...{ if(_kbhit() == 1) ...{ char c = _getch(); if(c ==27) ...{ printf("Game Over! "); break; } BarMove(c); } else if(g_nBallY==20) ...{ MoveCursorTo(18,9); printf("Game Over! "); MoveCursorTo(18,10); printf("请输入0和1选择"); scanf("%d",&i); if(i!=1) ...{ break; } else ...{ BallMove(); Pop(); sleep(5); if(g_nBallY==20) ...{ BallMove(); Pop(); sleep(5); } } } BallMove(); Pop(); sleep(5);} } void main() ... { CreateSmWindow("",0,0,40,28,14,0); MainLoop();} 该程序实现了 一个 小球的 简单碰撞 运行时,需要两个库函数