笔记来自于onenote导出,所以为图片格式
目前实现效果:
核心代码:(面向对象编程的思路)
开源在了github上:
GUORUI_CHINA_HIT_BLOCK_GAME
代码的框架展示:
//核心代码:
//碰撞检测
void ballCheck(){
if (balls.x >= WINDOW_W - balls.r){
balls.x_move = -MOVE_SPACE; //右边撞到,x变小
}
if (balls.x <= balls.r){
balls.x_move = MOVE_SPACE; //左边撞到,x变大
}
if (balls.y <= balls.r){
balls.y_move = MOVE_SPACE; //下边撞到,y变小
}
if (balls.y >= WINDOW_H - BOARD_H){
if (balls.x > getBoardX() && balls.x <= (getBoardX() + BOARD_W)){
balls.y_move = -MOVE_SPACE;
}
}
if (balls.y >= WINDOW_H - balls.r){
setisOver(TRUE);
}
}
//板子防止震动
void moveBoard(){
int order = keycheck();
if (order == 2){
if (checkBoard()){
board_user.x_pose -= BOARD_MOVE;//板子左移
}
else{
board_user.x_pose += (2 * BOARD_MOVE);//防止板子被锁死以及超界
}
}
if (order == 1){
if (checkBoard()){
board_user.x_pose += BOARD_MOVE;//板子左移
}
else{
board_user.x_pose -= (2 * BOARD_MOVE);//防止板子被锁死以及超界
}
}
}
//main函数
int main(){
//初始化窗口界面
initgraph(WINDOW_W, WINDOW_H, SHOWCONSOLE);
initBlock();
initBoard();
initBall();
isOver = FALSE;
while (!isOver){
BeginBatchDraw();//防止闪烁 在绘图/贴图之前(缓存)
cleardevice();//清屏,防止出现之前的轨迹
drawAllBlock();
drawBoard();
drawBall();
hitblockCheck();
ballCheck();
moveBall();
moveBoard();
EndBatchDraw();//防止闪烁 在绘图/贴图之后
}
//outtextxy(WINDOW_W / 2 - 10, WINDOW_H / 2 -10, "游戏结束");
printf("游戏结束");
Sleep(10 * 1000);
return 0;
}
目前存在的问题: