#include<string.h>\\预处理命令
#include<stdio.h>\\
#include <stdlib.h>\\标准库头文件
#include<conio.h>\\预处理命令
void moveqiu(void);
void penzhuangqiu(void);
void printf(void);
void menu(void);
main(void)
{
// DaZhuanKuai.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include<string.h>
#include<stdio.h>
#include <stdlib.h>
#include<conio.h>
// 屏幕阵列:(大小=22x50),其值0:空白,1:玩家操作的板,2:球,3:上方砖块,4:边界
int scr[22][50],
// 砖头的行位置
q = 14,
// 砖头的列位置
w = 30,
// 板的(列)位置
ban = 20,
// 得分
score = 1,
// 球运动的X方向
sx = -1,
// 球运动的Y方向
zy = -1,// 速度
speed = 1,//
chang = 30;// 移动球
void moveqiu(void);
// 碰撞球
void penzhuangqiu(void);
// 打印输出
void printf(void);
// 显示菜单
void menu(void);// 主函数
int main()
{
// i,j 循环变量
int i = 0, j = 0;
// 显示操作菜单:即显示:A左移D右移,任意键开始
menu(); // i为0,j从0到49:即第一行为屏幕上边界
for (; j < 50; j++)
// 屏幕赋值为4,负责顺序控制
scr[i][j] = 4; //
j = 0; i = 1; // i从1到2
for (; i < 3; i++)
// j 从2到47
for (j = 2; j < 48; j++)
// 屏幕赋值为3
scr[i][j] = 3; // 这里设置砖头的初始位置:(q,w)=(14,30), 2表示球
scr[q][w] = 2; // 游戏主循环
while (1)
{
// j从0到20
for (j = 0; j < 20; j++)
//将板位置归0
scr[21][ban + j] = 0; // 是否有键盘事件
if (kbhit())
//控制板的移动
switch (getch())
{
// 如果'a'键按下,则玩家板左移一格
case'a':case'A':if (ban > 1 && ban <= 29) ban--;
break;
// 如果'd'键按下,则玩家板右移一格
case'd':case'D':if (ban > 0 && ban <= 28) ban++;
break;
// 如果'w'键按下,则暂停
case'w':case'W':getch(); break;//暂停键
} // 重新绘制出板所占的格子
for (j = 0; j < 20; j++)//建立板位置为1
scr[21][ban + j] = 1; // 碰撞球处理
penzhuangqiu();
// 移动球
moveqiu();
// 输出结果
printf();
}
}// 函数功能:处理球碰撞
void penzhuangqiu(void)
{
int b;
b = 0; //以下四个if用来检测撞砖,并改变球的运动方向 // 向下运动
if (zy == 1)
// 如果为下边界
if (scr[q][w + 1] == 3 || w + 1 == 49)
{
// 清除边界
scr[q][w + 1] = 0;
// 方向改为向上
zy = -zy;
// 标识为已处理
b = 1;
} //判断运动又有方向
if (zy == -1)
// 如果为上边界
if (scr[q][w - 1] == 3 || w - 1 == 0)
{
// 清除边界
scr[q][w - 1] = 0;
// 方向改变向下
zy = -zy;
//用来确认是否敲打左右上下的方块
b = 1;
} // 判断运动为右方向
if (sx == 1)
// 如果为左边界
if (scr[q - 1][w] == 3 || q - 1 == 0)
{
// 清除边界
scr[q - 1][w] = 0;
// 方向改变向左
sx = -sx;
//用来确认是否敲打左右上下的方块
b = 1;
} // 判断运动为左方向
if (sx == -1)
// 如果为左边界
if (scr[q + 1][w] == 3 || q + 1 == 21)
{
// 如果为砖块
if (scr[q + 1][w] == 3)
{
// 清除边界或砖块
scr[q + 1][w] = 0;
// 方向改变向右
sx = -sx;
//用来确认是否敲打左右上下的方块
b = 1;
}
if (q + 1 == 21)
{
if (scr[q + 1][w] == 1)
sx = -sx;
else
{
printf("lose!!!!!!退出游戏");
if (getch())
main();
}
}
} //斜的砖块
if (b == 0)
{
// 向右向上运动
if (zy == 1 && sx == 1)
if (scr[q - 1][w + 1] == 3)
{
// 清除边界或砖块
scr[q - 1][w + 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
} // 向右向下运动
if (zy == -1 && sx == 1)
if (scr[q - 1][w - 1] == 3)
{
// 清除边界或砖块
scr[q - 1][w - 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
} // 向左向上运动
if (zy == 1 && sx == -1)
if (scr[q + 1][w + 1] == 3)
{
// 清除边界或砖块
scr[q + 1][w + 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
} // 向左向下运动
if (zy == -1 && sx == -1)
if (scr[q + 1][w - 1] == 3)
{
// 清除边界或砖块
scr[q + 1][w - 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
}
} //斜砖完毕
}// 函数功能:移动球
void moveqiu(void)
{
//使原来的球位置为0,并建立新的球位置
scr[q][w] = 0; // 如果方向向下,向右
if (sx == 1 && zy == 1)
{
// 向下向右移动一格
q--; w++;
} // 如果方向向下,向左
if (sx == 1 && zy == -1)
{
// 向下向左移动一格
q--; w--;
}
// 如果方向向上,向右
if (sx == -1 && zy == 1)
{
//向上,向右移动一格
q++; w++;
}
// 如果方向向上,向左
if (sx == -1 && zy == -1)
{
// 向上,向左移动一格
q++; w--;
} // 标识球的位置
scr[q][w] = 2;
}// 输出结果
void printf(void)
{
int i, j;
// 清屏
system("cls");
// i从0到21
for (i = 0; i < 22; i++)
{
// j从0到49
for (j = 0; j < 50; j++)
{
// 屏幕为空,输出空格
if (scr[i][j] == 0)printf(" ");
// 屏幕为板,输出ASIIC码'\3'
if (scr[i][j] == 1)printf("\3");
// 屏幕为球,输出ASIIC码'\4'
if (scr[i][j] == 2)printf("\4");
// 屏幕为砖,输出ASIIC码'\4'
if (scr[i][j] == 3)printf("\5");
// 屏幕为边界,输出ASIIC码'\4'
if (scr[i][j] == 4)printf("_");
// 到行末,输出换行
if (j == 49)
printf("|\n");
}
}
}
// 函数:显示玩家操作菜单
void menu(void)
{
// 再一次初始化各个变量
q = 14, w = 30, ban = 20, score = 1, sx = -1, zy = -1, speed = 1, chang = 30; memset(scr, 0, sizeof(int) * 1100); // 清屏
system("cls");
// 打印操作说明
printf("\n");
printf("\n");
printf("\n");
printf(" A向左,D向右,W暂停\n");
printf("\n");
printf("\n");
printf(" 开始游戏:任意键\n");
printf("\n");
printf("\n");
printf(" 现在要集中注意力开车了!!!\n");
printf("\n");
printf("\n");
printf(" 会有点闪烁,请注意合理游戏时间,注意保护视力。\n");
printf("\n");
printf("\n");
printf(" 挡板需要预判\n");
// 按任意键继续
if (getch())
printf("aaaaaa");
}
#include<stdio.h>\\
#include <stdlib.h>\\标准库头文件
#include<conio.h>\\预处理命令
void moveqiu(void);
void penzhuangqiu(void);
void printf(void);
void menu(void);
main(void)
{
// DaZhuanKuai.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include<string.h>
#include<stdio.h>
#include <stdlib.h>
#include<conio.h>
// 屏幕阵列:(大小=22x50),其值0:空白,1:玩家操作的板,2:球,3:上方砖块,4:边界
int scr[22][50],
// 砖头的行位置
q = 14,
// 砖头的列位置
w = 30,
// 板的(列)位置
ban = 20,
// 得分
score = 1,
// 球运动的X方向
sx = -1,
// 球运动的Y方向
zy = -1,// 速度
speed = 1,//
chang = 30;// 移动球
void moveqiu(void);
// 碰撞球
void penzhuangqiu(void);
// 打印输出
void printf(void);
// 显示菜单
void menu(void);// 主函数
int main()
{
// i,j 循环变量
int i = 0, j = 0;
// 显示操作菜单:即显示:A左移D右移,任意键开始
menu(); // i为0,j从0到49:即第一行为屏幕上边界
for (; j < 50; j++)
// 屏幕赋值为4,负责顺序控制
scr[i][j] = 4; //
j = 0; i = 1; // i从1到2
for (; i < 3; i++)
// j 从2到47
for (j = 2; j < 48; j++)
// 屏幕赋值为3
scr[i][j] = 3; // 这里设置砖头的初始位置:(q,w)=(14,30), 2表示球
scr[q][w] = 2; // 游戏主循环
while (1)
{
// j从0到20
for (j = 0; j < 20; j++)
//将板位置归0
scr[21][ban + j] = 0; // 是否有键盘事件
if (kbhit())
//控制板的移动
switch (getch())
{
// 如果'a'键按下,则玩家板左移一格
case'a':case'A':if (ban > 1 && ban <= 29) ban--;
break;
// 如果'd'键按下,则玩家板右移一格
case'd':case'D':if (ban > 0 && ban <= 28) ban++;
break;
// 如果'w'键按下,则暂停
case'w':case'W':getch(); break;//暂停键
} // 重新绘制出板所占的格子
for (j = 0; j < 20; j++)//建立板位置为1
scr[21][ban + j] = 1; // 碰撞球处理
penzhuangqiu();
// 移动球
moveqiu();
// 输出结果
printf();
}
}// 函数功能:处理球碰撞
void penzhuangqiu(void)
{
int b;
b = 0; //以下四个if用来检测撞砖,并改变球的运动方向 // 向下运动
if (zy == 1)
// 如果为下边界
if (scr[q][w + 1] == 3 || w + 1 == 49)
{
// 清除边界
scr[q][w + 1] = 0;
// 方向改为向上
zy = -zy;
// 标识为已处理
b = 1;
} //判断运动又有方向
if (zy == -1)
// 如果为上边界
if (scr[q][w - 1] == 3 || w - 1 == 0)
{
// 清除边界
scr[q][w - 1] = 0;
// 方向改变向下
zy = -zy;
//用来确认是否敲打左右上下的方块
b = 1;
} // 判断运动为右方向
if (sx == 1)
// 如果为左边界
if (scr[q - 1][w] == 3 || q - 1 == 0)
{
// 清除边界
scr[q - 1][w] = 0;
// 方向改变向左
sx = -sx;
//用来确认是否敲打左右上下的方块
b = 1;
} // 判断运动为左方向
if (sx == -1)
// 如果为左边界
if (scr[q + 1][w] == 3 || q + 1 == 21)
{
// 如果为砖块
if (scr[q + 1][w] == 3)
{
// 清除边界或砖块
scr[q + 1][w] = 0;
// 方向改变向右
sx = -sx;
//用来确认是否敲打左右上下的方块
b = 1;
}
if (q + 1 == 21)
{
if (scr[q + 1][w] == 1)
sx = -sx;
else
{
printf("lose!!!!!!退出游戏");
if (getch())
main();
}
}
} //斜的砖块
if (b == 0)
{
// 向右向上运动
if (zy == 1 && sx == 1)
if (scr[q - 1][w + 1] == 3)
{
// 清除边界或砖块
scr[q - 1][w + 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
} // 向右向下运动
if (zy == -1 && sx == 1)
if (scr[q - 1][w - 1] == 3)
{
// 清除边界或砖块
scr[q - 1][w - 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
} // 向左向上运动
if (zy == 1 && sx == -1)
if (scr[q + 1][w + 1] == 3)
{
// 清除边界或砖块
scr[q + 1][w + 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
} // 向左向下运动
if (zy == -1 && sx == -1)
if (scr[q + 1][w - 1] == 3)
{
// 清除边界或砖块
scr[q + 1][w - 1] = 0;
// 方向反向
zy = -zy;
sx = -sx;
}
} //斜砖完毕
}// 函数功能:移动球
void moveqiu(void)
{
//使原来的球位置为0,并建立新的球位置
scr[q][w] = 0; // 如果方向向下,向右
if (sx == 1 && zy == 1)
{
// 向下向右移动一格
q--; w++;
} // 如果方向向下,向左
if (sx == 1 && zy == -1)
{
// 向下向左移动一格
q--; w--;
}
// 如果方向向上,向右
if (sx == -1 && zy == 1)
{
//向上,向右移动一格
q++; w++;
}
// 如果方向向上,向左
if (sx == -1 && zy == -1)
{
// 向上,向左移动一格
q++; w--;
} // 标识球的位置
scr[q][w] = 2;
}// 输出结果
void printf(void)
{
int i, j;
// 清屏
system("cls");
// i从0到21
for (i = 0; i < 22; i++)
{
// j从0到49
for (j = 0; j < 50; j++)
{
// 屏幕为空,输出空格
if (scr[i][j] == 0)printf(" ");
// 屏幕为板,输出ASIIC码'\3'
if (scr[i][j] == 1)printf("\3");
// 屏幕为球,输出ASIIC码'\4'
if (scr[i][j] == 2)printf("\4");
// 屏幕为砖,输出ASIIC码'\4'
if (scr[i][j] == 3)printf("\5");
// 屏幕为边界,输出ASIIC码'\4'
if (scr[i][j] == 4)printf("_");
// 到行末,输出换行
if (j == 49)
printf("|\n");
}
}
}
// 函数:显示玩家操作菜单
void menu(void)
{
// 再一次初始化各个变量
q = 14, w = 30, ban = 20, score = 1, sx = -1, zy = -1, speed = 1, chang = 30; memset(scr, 0, sizeof(int) * 1100); // 清屏
system("cls");
// 打印操作说明
printf("\n");
printf("\n");
printf("\n");
printf(" A向左,D向右,W暂停\n");
printf("\n");
printf("\n");
printf(" 开始游戏:任意键\n");
printf("\n");
printf("\n");
printf(" 现在要集中注意力开车了!!!\n");
printf("\n");
printf("\n");
printf(" 会有点闪烁,请注意合理游戏时间,注意保护视力。\n");
printf("\n");
printf("\n");
printf(" 挡板需要预判\n");
// 按任意键继续
if (getch())
printf("aaaaaa");
}