[自学C语言第五天]发一个作品
c4droid吧
全部回复
仅看楼主
level 11
tgxx501 楼主
//受CGL范例启发,写了一个纯C的自动弹球机,可以用来研究反射情况。
//#include<stdio.h>
#include<conio.h>
#define xx 33
#define yy 22
#define Time 18000
void move(int o);
void color(int c);
void wk();
int x, y, i, lost_key, cr=37, high_light=0;
int main() {
wk();
printf("\e[?25l");
x=2;y=2;move(9);//发射配置
while (1){
if (y==yy){//碰底,y++,判断x-- or x++
if (lost_key==9){//从左打来
while (y!=2&&x!=2&&x!=xx){
move(3);
}
}
else if (lost_key==7){//从右打来
while (y!=2&&x!=2&&x!=xx){
move(1);
}
}
}
if (y==2){//碰顶,y--,判断x-- or x++
if (lost_key==1){//从右打来
while (y!=yy&&x!=2&&x!=xx){
move(7);
}
}
else if (lost_key==3){//从左打来
while (y!=yy&&x!=2&&x!=xx){
move(9);
}
}
}
if (x==xx){//碰到右壁,x++,判断y++ or y--
if (lost_key==3){//从下打来
while (x!=2&&y!=2&&y!=yy){
move(1);
}
}
else if (lost_key==9){//从上打来
while (x!=2&&y!=2&&y!=yy){
move(7);
}
}
}
if (x==2){//碰到左壁,x--,判断y++ or y--
if (lost_key==1){//从下打来
while (x!=xx&&y!=2&&y!=yy){
move(3);
}
}
else if (lost_key==7){//从上打来*
while (x!=xx&&y!=2&&y!=yy){
move(9);
}
}
}
if (x!=xx&&y!=2&&y!=yy&&x!=2){
move(lost_key);
}
if (x==xx&&y==yy){//碰到右下角(lost_key==9)
move(1);//有风险,初始值方向设置错误也能发射。
color(1);
}
if (x==2&&y==yy){//碰到左下角(lost_key==7)
move(3);
color(1);
}
if (x==xx&&y==2){//碰到右上角(lost_key==3)
move(7);
color(1);
}
if (x==2&&y==2){//碰到左上角(lost_key==1)
move(9);
color(1);
}
}
}
void move(int o) {
/*if (lost_key==1){//把这部分代码去掉注释就会自动清理上一个点
gotoxy(x+1,y+1);
printf(" ");
}
else if (lost_key==3){
gotoxy(x-1,y+1);
printf(" ");
}
else if (lost_key==7){
gotoxy(x+1,y-1);
printf(" ");
}
else if (lost_key==9){
gotoxy(x-1,y-1);
printf(" ");
}*/
gotoxy(x,y);
//printf("\e[7m ");
if (high_light==0){
printf("\e[0m");
}
else if (high_light==1){
printf("\e[1m");
}
printf("\e[%dmo\e[0m",cr);
if (o == 1) {
if (x > 2 && y > 2) {
x--;
y--;
lost_key=1;
}
}
else if (o == 3) {
if (x < xx && y > 2) {
x++;
y--;
lost_key=3;
}
}
else if (o == 7) {
if (x > 2 && y < yy) {
x--;
y++;
lost_key=7;
}
}
else if (o == 9) {
if (x < xx && y < yy) {
x++;
y++;
lost_key=9;
}
}
gotoxy(1,1);
printf("\e[7m(%d,%d) \e[0m",x,y);
usleep(Time);
fflush(stdout);
}
void wk() {
printf("\e[?25h");
clrscr();
printf("\e[7m");
for (i = 1; i <= xx + 1; i++) {
gotoxy(i, 1);
printf(" ");
}
for (i = 2; i < yy + 1; i++) {
gotoxy(1, i);
printf(" ");
gotoxy(xx + 1, i);
printf(" ");
}
for (i = 1; i <= xx + 1; i++) {
gotoxy(i, yy + 1);
printf(" ");
}
printf("\e[0m");
}
void color(int c){
if (c==1){
cr--;
if (cr==29){
cr=37;
if (high_light==0){
high_light=1;
}
else if (high_light==1){
high_light=0;
}
}
printf("\e[%dm",cr);
}
else if (c==0){
printf("\e[0m");
}
}
2016年08月05日 12点08分 1
level 11
tgxx501 楼主
注意第86行的注释,为了效果默认注释掉了清理程序。小球打到角落会自动变色。[滑稽]支持地图大小调节(最前面),支持发射点自定义,支持运动时间间隔调整(最前面)。
2016年08月05日 12点08分 2
小球一共有14种颜色[haha][滑稽][胜利]
2016年08月05日 12点08分
level 11
tgxx501 楼主
字体建议8-12像素。
2016年08月05日 12点08分 3
前排。
2016年08月05日 15点08分
level 5
上图片啊
2016年08月05日 14点08分 4
level 11
tgxx501 楼主
[滑稽](注意轨迹可以去掉,因为贴吧不支持动态图,故保留,详见注释。)
2016年08月05日 14点08分 5
楼主什么键盘?
2016年08月19日 12点08分
level 11
tgxx501 楼主
1
2016年08月05日 14点08分 6
level 11
tgxx501 楼主
下一版本可能会支持多个球。[滑稽]
2016年08月05日 14点08分 9
level 13
留名。
2016年08月05日 15点08分 10
level 6
真的只学了五天吗,这太不可思议了吧
2016年08月06日 15点08分 14
第六天了。就是一些简单函数的反复使用,没用算法,没用数组。
2016年08月06日 15点08分
但是我觉得你运用的好熟练,能够把学到的所有东西都用上去
2016年08月06日 15点08分
level 11
tgxx501 楼主
V2.2版本:http://yunpan.cn/c68b5XAiNa7XV
支持4个球。
下个版本要研究一下N个球。[不高兴]
2016年08月06日 15点08分 15
你是自己买书看的么,推荐一下有什么好书吧
2016年08月06日 15点08分
level 11
tgxx501 楼主
等我研究下随机函数,加个操作反馈,这个就变成游戏了。[笑眼]
2016年08月06日 15点08分 16
怪不得我打开就看到动画在变色而已,以为能玩
2016年08月10日 15点08分
level 11
tgxx501 楼主
2016年08月06日 16点08分 17
level 13
你这如果有无数个球就可以模拟粒子系统了。
2016年08月06日 16点08分 18
终端模拟printf输出粒子恐怕会炸。[喷]
2016年08月06日 17点08分
@tgxx501 我有信心CGL不会炸[滑稽]
2016年08月06日 17点08分
回复 李登淳 :话说回来,CGL有没有使用手册?你的github找遍了也没看到使用手册。[泪]
2016年08月06日 17点08分
@tgxx501 还真没有,CGL5及以前没法写,太乱了,CGL6没动力不想写了。你加我QQ吧,有你用我就有十足的动力重构CGL6。
2016年08月06日 17点08分
level 13
第五天就这么牛逼
2016年08月07日 13点08分 19
level 9
牛逼👍👍
2016年08月07日 18点08分 20
1 2 尾页