博客主页 🐟
C语言------(游戏)打飞机
C语言------(游戏)打飞机

Author:

©

Wordage:

共计 4725 字

needs:

约 1 分钟

Popular:

182 ℃

Created:

目 录
    #include <stdio.h>
    #include <windows.h>
    #include <conio.h>
    #include <time.h>
    #define Esc 27 //退出
    #define Up 72 //上,下,左,右
    #define Down 80
    #define Left 75
    #define Right 77
    #define Kong 32 //发射子弹
    
    
    int x=10; //飞机坐标
    int y=18;
    
    int d2=10;//敌机坐标
    int d1=10;
    int d=10;
    int r=1;
    int r1=1;
    int r2=1;
    
    
    int t=1; // 游戏结束
    int f=0; // 计分数
    int m=3; // 敌机数
    int j=0; // 歼敌数
    char p; // 接受按键
    
    
    void kongzhi(int bx,int by);//声明函数
    void huatu();
    
    
    void gotoxy(int x,int y) //移动坐标
    {
    COORD coord;
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
    }
    void hidden()//隐藏光标
    {
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO cci;
    GetConsoleCursorInfo(hOut,&cci);
    cci.bVisible=0;//赋1为显示,赋0为隐藏
    SetConsoleCursorInfo(hOut,&cci);
    }
    //**************************************************************************************
    
    
    //说明
    void shuoming()
    {
    printf("\t\t\t\n\n\n\n");
    
    printf("\t\t\t方向控制\n\n"
    "\t\t\t上 ↑\n\n"
    "\t\t\t下 ↓\n\n"
    "\t\t\t左 ←\n\n"
    "\t\t\t右 →\n\n"
    "\t\t\t子弹 空格\n\n\n"
    "\t\t\t退出请按 ESC\n");
    gotoxy(0,0);
    }
    
    
    //****************************************************************************************
    
    
    //判断我机死没死/游戏结束
    void byebye()
    {
    if((x==d&&y==r)||(x==d1&&y==r1)||(x==d2&&y==r2))
    { gotoxy(1,3);
    printf(" !!! 游戏结束 !!!\n"
    "*******************\n"
    " 您的总得分: %d\n\n"
    " 敌机数: %d\n"
    " 歼敌数: %d\n"
    " 命中率: %.0f %%\n"
    "*******************\n",f,m,j,((float)j/(float)m)*100);
    while(!kbhit())
    { Sleep(500);
    gotoxy(1,12);
    printf(" 继续请按任意键...\n\n\n");
    Sleep(900);
    gotoxy(1,12);
    printf(" ");
    }
    gotoxy(0,0);
    huatu();
    f=0; m=0; j=0;
    if(x>=18) x--;
    else x++;
    gotoxy(x,y);
    printf("Ж");
    }
    }
    // 计分/更新敌机
    void jifan()
    {
    if(x==d&&y==r)
    { gotoxy(d,r); printf("3");
    Sleep(200);
    gotoxy(d,r); printf(" "); f+=2; r=0; j++;}
    if(x==d1&&y==r1)
    { gotoxy(d1,r1); printf("1");
    Sleep(200);
    gotoxy(d1,r1); printf(" "); f+=3; r1=0; j++;}
    if(x==d2&&y==r2)
    { gotoxy(d2,r2); printf("0");
    Sleep(200);
    gotoxy(d2,r2); printf(" "); f+=1; r2=0; j++;}
    
    gotoxy(26,2);
    printf(" %d \n",f);
    
    }
    //画图
    void huatu()
    { int i,n;
    
    for(i=0;i<=20;i++)
    {
    for(n=0;n<=20;n++)
    {
    printf("*");
    }
    printf("\n");
    }
    for(i=1;i<=19;i++)
    {
    for(n=1;n<=19;n++)
    {
    gotoxy(i,n);
    printf(" ");
    }
    }
    }
    
    
    //随机产生敌机
    void dfeiji ()
    {
    while(t)
    {
    if(!r) {d=rand()%17+1; m++;}
    if(!r1) {d1=rand()%17+1; m++;}
    if(!r2) {d2=rand()%17+1; m++;}
    
    while(t)
    { r++; r1++; r2++;
    gotoxy(d,r); printf("Ψ");
    gotoxy(d1,r1); printf("ж");
    gotoxy(d2,r2); printf("♀");
    Sleep(900);
    gotoxy(d,r); printf(" ");
    gotoxy(d1,r1); printf(" ");
    gotoxy(d2,r2); printf(" ");
    
    
    kongzhi(0,0);
    byebye();
    if(r==18) r=0;
    if(r1==18) r1=0;
    if(r2==18) r2=0;
    if(r==0||r1==0||r2==0) break;
    }
    }
    }
    
    
    //操控飞机
    void kongzhi(int bx,int by)
    {int a;
    
    
    while (kbhit())
    {if ((p=getch())==-32) p=getch();
    a=p;
    gotoxy(22,5);
    
    switch(a)
    {//控制方向
    case Up:if (y!=1)
    { gotoxy(x,y); printf(" ");
    y--;
    gotoxy(x,y); printf("Ж");
    }break;
    case Down:if (y!=18)
    { gotoxy(x,y); printf(" ");
    y++;
    gotoxy(x,y); printf("Ж");
    }break;
    case Left:if (x!=1)
    { gotoxy(x,y); printf(" ");
    x--;
    gotoxy(x,y); printf("Ж");
    }break;
    case Right:if (x!=18)
    { gotoxy(x,y); printf(" ");
    x++;
    gotoxy(x,y); printf("Ж");
    }break;
    case Kong:{ bx=y;
    for(by=y;by>1;) //发射子弹
    { by--;
    gotoxy(x,by); printf("θ");
    Sleep(10);
    gotoxy(x,by); printf(" ");
    y=by;
    jifan();
    if(r==0||r1==0||r2==0) break;
    }
    y=bx;
    }break;
    
    case Esc:t=0; break; //退出
    
    default:break;
    }
    }
    }
    
    void main()
    {
    srand(time(NULL));
    shuoming();
    hidden();
    huatu();
    gotoxy(x,y);
    printf("Ж");
    
    gotoxy(22,2);
    printf("分数:");
    while (t)
    { kongzhi(0,0);
    if(t)
    dfeiji ();
    }
    
    }
文章二维码
C语言------(游戏)打飞机
共计 0 条评论,点此发表评论
博客主页 哀.net OωO
萌ICP备20238808号 本站已运行 1 年 209 天 3 小时 7 分 Copyright © 2023 ~ 2024. 哀.net All rights reserved.
打赏图
打赏博主
欢迎
搜 索
足 迹
分 类
  • 默认分类
  • 语言分类
  • 其他分类