免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3717 | 回复: 8
打印 上一主题 下一主题

谁有能实现“打飞机”的程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-19 13:37 |只看该作者 |倒序浏览
用什么实现都可以(在linux下),先谢谢了

论坛徽章:
0
2 [报告]
发表于 2004-10-19 13:42 |只看该作者

谁有能实现“打飞机”的程序

类似“小蜜蜂”这个游戏,就是有一架飞机在屏幕上移来移去,屏幕下边有一个炮塔,可以发射炮弹来打飞机。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-10-19 15:14 |只看该作者

谁有能实现“打飞机”的程序

要干什么?

论坛徽章:
0
4 [报告]
发表于 2004-10-19 17:32 |只看该作者

谁有能实现“打飞机”的程序

要作一个小游戏,给点思路就好

论坛徽章:
0
5 [报告]
发表于 2004-10-19 18:03 |只看该作者

谁有能实现“打飞机”的程序

呵呵,Linux用不来
我是在Win下用TC的Graphics.h写的

论坛徽章:
0
6 [报告]
发表于 2004-10-19 18:12 |只看该作者

谁有能实现“打飞机”的程序

大家都来帮帮忙吧

论坛徽章:
0
7 [报告]
发表于 2004-10-26 15:45 |只看该作者

谁有能实现“打飞机”的程序

经过几天的修炼,终于写出来了,只能自己回复自己了
#include <curses.h>;
#include <signal.h>;
#include <stdio.h>;
#include <unistd.h>;
#include <sys/types.h>;
#include <sys/time.h>;
#include <sys/select.h>;

#define StartX 1
#define StartY 1
int px,py; //plane x,y
void initial()
{
        initscr();
        cbreak();
        nonl();
          noecho();
        intrflush(stdscr,FALSE);
        keypad(stdscr,TRUE);
        refresh();       
}
void draw_plane(int x,int y)    //draw plane
{
        int ix,iy;
        ix=x;
        iy=y;
        move(ix,iy);
        mvaddstr(iy,ix," o";
        iy++;
        mvaddstr(iy,ix,"ooooooo";
        iy++;
        mvaddstr(iy,ix," o";
}
void cls_plane(int x,int y)
{
        int ix,iy;
        ix=x;
        iy=y;
        move(ix,iy);
        mvaddstr(iy,ix,"                                                 ";
        iy++;
        mvaddstr(iy,ix-1,"                                                 ";
        iy;
        mvaddstr(iy,ix-1,"                                                 ";
        mvaddstr(3,60,"                      ";
}
void draw_gun(int x)
{
        int ix,iy;
        iy=24;
        ix=x;
        move(ix,iy);
        mvaddstr(iy,ix,"(^)";
}
void cls_gun(int x)
{
        int ix,iy;
        iy=24;
        ix=x;
        move(ix,iy);
        mvaddstr(iy,ix,"   ";
}

int draw_pd(int x)
{
        int ix,iy;
        ix=x+1;
        iy=0;
        int iflag=0;
        for(;iy<24;iy+=2)
        {
                if (ix>;px && ix<(px+6) && iy>;py && iy<(py+3))
                        {
                        mvaddstr(12,35,"You win";
                        //refresh();
                        iflag=1;
                        }
                else
                        mvaddstr(iy,ix,"|");
        }
        if(iflag==1)
                return 1;               
        else
                return 0;
}
void cls_pd(int x)
{
        int ix,iy;
        ix=x+1;
        iy=23;
        for(;iy>;=0;iy--)
                mvaddstr(iy,ix," ");
}
int main(void)
{
        int x=StartX; //gun x,y
        int y=StartY;
        int ch;
        px=StartX; //plane x,y
        py=StartY;
        int ret;
        fd_set fds;
        struct timeval tv;

        initial();        //curses init
        draw_gun(1);
        do{
        FD_ZERO(&fds);
        FD_SET(0,&fds);
        tv.tv_sec=0;       
        tv.tv_usec=50000;
        ret=select(1,&fds,NULL,NULL,&tv);
        if (ret==0)
                {
                cls_plane(px,py);
                if(px<75)
                       
                        px++;
                else
                {
                px=1;
                py=1;
                }
                draw_plane(px,py);
                mvaddstr(12,35,"              ");
                move(1,1);
                refresh();
                //sleep(1);
                }
        if(FD_ISSET(0,&fds))
                {       
                ch=getch();
                switch(ch){
                case KEY_UP:        
                                draw_pd(x);
                                refresh();
                                sleep(1);
                                cls_pd(x);
                                break;     //fire
                case KEY_DOWN:
                                break;
                case KEY_RIGHT:
                                cls_gun(x);  //gun move right
                                if (x<75)
                                ++x;
                                else
                                x=75;
                                draw_gun(x);
                                break;
                case KEY_LEFT:
                                cls_gun(x);  //gun move left
                                if(x>;1)
                                --x;
                                else
                                x=1;
                                draw_gun(x);
                                break;
                case 27:
                                clear();
                                refresh();
                                endwin();   //ESC is quit
                                exit(1);
                default:
                                break;
        }
        move(1,1);
        }
        }while(1);
               
       
}

论坛徽章:
0
8 [报告]
发表于 2004-10-26 19:51 |只看该作者

谁有能实现“打飞机”的程序

请问,能够让他用tc运行吗?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-10-26 22:30 |只看该作者

谁有能实现“打飞机”的程序

当然不行。linux下的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP