flappy bird命令 版
c4droid吧
全部回复
仅看楼主
level 13
TTHHR 楼主
//字体要调最小……
/*********************
***Flappy Bird******
命令行版
-------------------------------------
****by:TTHHR****
*******ver:1.0*********/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define H 30
// 高度high
#define W 90
// 宽度weight
#define K H/5
#define UP '2'
#define DOWN '5'
#define DEF 'x'
#define T 300
#define A 1
#define V 1 //上升和下降的步长
// 自定义动作键…
void getway();//获取用户输入
void move(char yi);//移动数组
void draw();//将数组画出
void judge();//判断
void getwall();//随机出现带口的柱子
void over();
int x, y;
// x横坐标即列数,y纵坐标即行数…
int i, j, time =20;
char yi;
// 储存动作
char *head, *tail;
// 指向头尾
char map[H][W];
// 用二维数组存全图…
int main()
{
for (i = 0; i != H; ++i)
for (j = 0; j != W; ++j)
{
if ((i == 0) || (i == H - 1))
map[i][j] = '3';//边界
else
map[i][j] = '0';//空白部分
}// 初始化数组
x = W / 5;//
y = H / 2;//鸟的坐标
head = &map[y][x + 1];
tail = &map[y][x];
*head = '1';
*tail = '1';//头尾的代表字符
yi = DEF;//初始化动作
getchar();//程序暂停
while (1)
{
if (time % 20== 0)
getwall();//每隔20步,出现一个柱
getway();
move(yi);
judge();
draw();
usleep(100);
time++;
yi == DEF;//成为默认动作
usleep(T*1000);
// 步时
clrscr();
//printf("\n");
//clrscr();
}
return 0;
}
void getway()
{
char t;
while (kbhit())// 判断有无输入值…
{
t = getch();// 有则捕获…
if ((t != UP) && (t != DOWN))
setbuf(stdin, NULL);//清空缓冲区
else
yi = t;
}
}
void getwall()
{
int b;
//while ((b + 2 >= H) || (b - 2 <= 0))
b = random() %(H-2-2*K)+1+K;
for (j = 0; j < b - K; ++j)
map[j][W -1] = '3';
for (j = b + K; j < H-1; ++j)
map[j][W -1] = '3';
}
void move(char yi)
{
static int mov=0;//
if (yi == DEF)
mov =A ;//没实现……
else if (yi == UP)
mov = -V;//
else if (yi == DOWN)
mov = 1;
// 对动作的判断
*head = '0';
*tail = '0';//将原来的头尾变成空白
y = y + mov;
head = &map[y][x + 1];
tail = &map[y][x];//指向新的坐标
for (i = 1; i != H-1; ++i)
{
for (j = 0; j != W-1; ++j)
{
if ((i == y) && ((j <= x + 1) && (j >= x)))
;//数组左移,跳过鸟的坐标
else
map[i][j] = map[i][j + 1];
}
map[i][j]='0';
}
}
void judge()
{
switch (*head)
{
case '3':
over();
break;
case '0':
*head = '1';
*tail = '1';
// 如果是空白,就把值换成1
break;
}
}
void draw()
// 绘图…
{
for (i = 0; i != H; ++i)
{
for (j = 0; j != W; ++j)
switch (map[i][j])
{
case '0':
printf(" ");
break;
case '3':
printf("#");
break;
case '1':
printf("\033[41;33m@\33[40;37m");
break;
}
printf("\n");
}
}
void over()
// game over!!!
{
printf("\tGame over!!!\n");
exit(0);
}
2014年02月27日 03点02分 1
level 13
TTHHR 楼主
@啊o额iu鱼
以啊o额iu鱼的贪食蛇为模板,有一定的bug
运行开始时输入任意字符开始,2'5控制上下。
字体要调到最小
2014年02月27日 04点02分 2
回复 溯流光孔明 :有一点bug,你让它上,它就一直上,让它下,它就一直下
2014年03月05日 03点03分
回复 溯流光孔明 :这个去艾特三楼的哪 那位!反正我是没有解决,你自己试试吧
2014年03月05日 04点03分
level 13
// 又改了些……
/*********************
***Flappy Bird******
命令行版
-------------------------------------
****by:TTHHR****
*******ver:1.0*********/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define H 40
// 高度high
#define W 120
// 宽度weight
#define K H/5
#define UP '2'
#define DOWN '5'
#define DEF 'x'
#define T 100
#define A 1
#define V 3// 上升和下降的步长
// 自定义动作键…
void getway();// 获取用户输入
void move(char yi);// 移动数组
void draw();// 将数组画出
void judge();// 判断
void getwall();// 随机出现带口的柱子
void over();
int x, y;
// x横坐标即列数,y纵坐标即行数…
int i, j, time = 20;
char yi;
// 储存动作
char *head, *tail;
// 指向头尾
char map[H][W];
// 用二维数组存全图…
int main()
{
for (i = 0; i != H; ++i)
for (j = 0; j != W; ++j)
{
if ((i == 0) || (i == H - 1))
map[i][j] = '3';// 边界
else
map[i][j] = '0';// 空白部分
}// 初始化数组
x = W / 5;//
y = H / 2;// 鸟的坐标
head = &map[y][x + 1];
tail = &map[y][x];
*head = '1';
*tail = '1';// 头尾的代表字符
yi = DEF;// 初始化动作
getchar();// 程序暂停
while (1)
{
if (time % 20 == 0)
getwall();// 每隔20步,出现一个柱
getway();
move(yi);
judge();
draw();
usleep(100);
time++;
yi = DEF;// 成为默认动作//啊o额iu鱼多了个=
usleep(T * 1000);
// 步时
clrscr();
}
return 0;
}
void getway()
{
char t;
/*while (kbhit())// 判断有无输入值…
{
t = getch();// 有则捕获…
if ((t != UP) && (t != DOWN))
setbuf(stdin, NULL);// 清空缓冲区
else
yi = t;
}
*///啊o额iu鱼
if (kbhit())
{yi=UP;
while (kbhit())
t=getch();
}
}
void getwall()
{
int b;
// while ((b + 2 >= H) || (b - 2 <= 0))
b = random() % (H - 2 - 2 * K) + 1 + K;
for (j = 0; j < b - K; ++j)
map[j][W - 1] = '3';
for (j = b + K; j < H - 1; ++j)
map[j][W - 1] = '3';
}
void move(char yi)
{
static int mov = 0;//
if (yi == DEF)
mov += A;// 没实现……
else if (yi == UP)
mov = -V;//
else if (yi == DOWN)
mov = 1;
// 对动作的判断
*head = '0';
*tail = '0';// 将原来的头尾变成空白
y = y + mov;
if (y>H)
over();
head = &map[y][x + 1];
tail = &map[y][x];// 指向新的坐标
for (i = 1; i != H - 1; ++i)
{
for (j = 0; j != W - 1; ++j)
{
if ((i == y) && ((j <= x + 1) && (j >= x)))
;// 数组左移,跳过鸟的坐标
else
map[i][j] = map[i][j + 1];
}
map[i][j] = '0';
}
}
void judge()
{
switch (*head)
{
case '3':
over();
break;
case '0':
*head = '1';
*tail = '1';
// 如果是空白,就把值换成1
break;
}
}
void draw()
// 绘图…
{
for (i = 0; i != H; ++i)
{
for (j = 0; j != W; ++j)
switch (map[i][j])
{
case '0':
printf(" ");
break;
case '3':
printf("#");
break;
case '1':
printf("\033[41;33m@\33[40;37m");
break;
}
printf("\n");
}
}
void over()
// game over!!!
{
printf("\tGame over!!!\n");
exit(0);
}
2014年02月27日 04点02分 4
啦啦
2014年02月28日 09点02分
把他复制后,31行有错
2014年03月04日 13点03分
回复 music_fans_i :是g++编译器吗?
2014年03月04日 13点03分
回复 啊o额iu鱼 :我用的是老版英文的,你定义的time函数在那里报错了,我改了下名字,可以运行了,但一运行就game over了
2014年03月04日 14点03分
level 13
不得不说,这游戏确实比贪吃蛇好玩……
2014年02月27日 04点02分 5
level 13
不定期诈尸?安装个贴吧客户端吧……
2014年02月27日 04点02分 6
level 13
。。。。。我不玩了~~~我还在弄SDL版的。。。你们就弄出个这个,,,啊!~~不玩了~不玩了~~欺负人啊~~@啊o额iu鱼
2014年02月27日 05点02分 8
嘿嘿……
2014年02月27日 05点02分
我最早也想过SDL,觉得1.2绘图效率实在不行,又没什么时间学2.0就放弃了……
2014年02月27日 05点02分
我就猜到有人在弄,所以吧这个糊弄了一下就发出来了
2014年02月27日 05点02分
回复 啊o额iu鱼 :我擦,全是大神啊
2014年02月27日 06点02分
level 13
TTHHR 楼主
2014年02月27日 07点02分 9
level 12
不错,一会试试
2014年02月27日 08点02分 10
level 12
有截图么
2014年02月27日 08点02分 11
要截图干嘛?
2014年02月27日 12点02分
回复 TTHHR :苯呐,来个图就给精了……
2014年02月27日 13点02分
level 13
我来发图……@qw3752258
2014年02月27日 13点02分 12
直接 就 game over 了 怎么玩?
2014年02月28日 12点02分
回复 吃山的水 :调整一下开头的参数,宽高时间……
2014年02月28日 13点02分
回复 吃山的水 :是不是速度太快了,??而且是2'5控制上下
2014年02月28日 16点02分
level 9
我也想弄的,可是高三百日冲刺了,没时间…………苦逼
2014年02月28日 02点02分 13
高三没什么,吧里好多高三的……
2014年02月28日 04点02分
回复 啊o额iu鱼 :学了c++程序设计再学啥?
2014年02月28日 06点02分
回复 malijiee : 随便看看,都能看的,反正我是没再深入,回头看c++primer英文版去了http://pan.baidu.com/share/link?shareid=3281660174&uk=1076105201
2014年02月28日 08点02分
回复 啊o额iu鱼 :好久没来了
2014年03月01日 04点03分
level 12
新人求教,这个怎么用?
我保存为txt用C4打开后运行空白
2014年02月28日 04点02分 14
没看到有个暂停吗??任意输入一个字符,回车,就开始了,记得,2'5控制上下移动
2014年02月28日 05点02分
level 11
怎样使速度变慢?
   -- 得不到的永远在骚动
     被偏爱的都有恃无恐
    欢迎来搞
     http://www.gao4.com/page3/b/
2014年02月28日 11点02分 15
开头有几个宏定义……
2014年02月28日 14点02分
level 9
黄日军
2014年02月28日 13点02分 16
level 8
楼主我的编辑器为什么跟你的不一样,你得往哪里下载
2014年02月28日 14点02分 17
什么编辑器??
2014年02月28日 16点02分
回复 TTHHR :就是楼主的那个程序
2014年03月01日 01点03分
回复 LWJ19970107 :我发的只是代码,哪里有编辑器???你指的是那个截图吗?那不是我的截图,你去艾特他吧
2014年03月01日 04点03分
回复 TTHHR :哦哦
2014年03月04日 01点03分
level 5
高产的楼主
2014年02月28日 19点02分 18
level 13
C语言吧出sdl版了[泪]
————魔术,梦与艺术的融合······
2014年03月01日 07点03分 19
好吧。。。。。
2014年03月01日 09点03分
level 7
[真棒][真棒][真棒]
2014年03月04日 02点03分 21
level 10
这个厉害了
2014年03月04日 13点03分 22
1 2 尾页