今天给大家带来一个射击游戏(不是人机哦),

直接上代码:

#include<algorithm>
#include<cmath>
#include<vector>
#include<stdio.h>
#include<iostream>
#include<string>
#include<cstring>
#include<windows.h>
#include<conio.h>
#include<cstdlib>
#include<ctime>
#include<fstream>
#define  /*白色*/white SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
#define  /*初始色*/original SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
#define  /*红色*/red SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);
#define /*绿色*/green SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
#define /*蓝色*/blue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_BLUE);
#define /*黄色*/yellow SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_GREEN);
#define /*粉色*/pink SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED |FOREGROUND_BLUE);
#define /*淡蓝*/lightblue SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN |FOREGROUND_BLUE);
#define /*灰色*/gray SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
using namespace std;
void gotoxy(int y,int x)
{COORD  coord;     coord.X=x;         coord.Y=y;HANDLE a=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(a,coord);
}
void coutwhat(int a,int b,int c,int d,string n)
{int i,j;for(i=a;i<=c;i++)for(j=b;j<=d;j++){gotoxy(i,j);cout<<n;}
}
void color(int x)
{switch(x){case 0:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED |FOREGROUND_GREEN);break;case 1:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_GREEN);break;case 2:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_GREEN);break;case 3:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_GREEN);break;case 4:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE);break;case 5:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_BLUE |FOREGROUND_RED);break;case 7:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED);break;case 8:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_GREEN);break;case 9:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |FOREGROUND_RED|FOREGROUND_BLUE);break;case 10:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);break;default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);break;}
}
int random(int n,int m)
{int s;s=rand()%(m-n+1);s+=n;return s;
}void cls()
{system("cls");
}
struct Player
{string name;int hp;int HP;int attack;int defence;int fw;//0,1,2,3int energy;int kill;int x;int y;int sc;int zl;int cs;
};
Player player[5];
void printfssbh(int n)
{int i,j,k;for(i=1;i<=4;i++){gotoxy(0,i*25);cout<<player[i].energy<<"("<<player[i].energy/10.0<<"%)"<<player[i].kill<<"kill ";}//计算生命百分比 float a[5];int b[5];for(i=1;i<=n;i++)a[i]=(player[i].hp*1.0)/(player[i].HP*1.0);for(i=1;i<=n;i++)b[i]=a[i]*100;for(i=1;i<=n;i++)if (b[i]>10000)b[i]=0;//死者 elseif (b[i]>100)b[i]=100;//血量溢出但还没死 //输出 for(i=1;i<=n;i++){gotoxy(35+i,0);cout<<"|";coutwhat(35+i,1,35+i,b[i],"#");coutwhat(35+i,b[i]+1,35+i,100," ");gotoxy(35+i,101);cout<<"|";cout<<a[i]*100.0<<'%';cout<<" "<<player[i].hp;}
}
bool save[5]={1,1,1,1,1};
void printfplayer(string ml,int n)
{int i;if (ml=="clear"){for(i=1;i<=n;i++){gotoxy(player[i].x,player[i].y);cout<<"  ";}}if (ml=="printf"){for(i=1;i<=n;i++){if (save[i]==0) //此人已亡 continue;color(i*3);gotoxy(player[i].x,player[i].y);cout<<"♀";}}
}
void hidden()
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle, &CursorInfo);
CursorInfo.bVisible = false;
SetConsoleCursorInfo(handle, &CursorInfo);
}
/*
攻击方式:
player 1 十字架攻击
player 2 小范围攻击
player 3 全战场攻击 (随机攻击一人)
player 4 三角形攻击*/
int PVP(int n)
{int r=n,m,i,j,k,sh;//输出界面coutwhat(1,0,1,100,"=");coutwhat(2,0,32,0,"|");coutwhat(33,0,33,100,"=");coutwhat(2,101,32,101,"|");while(r>1){for(i=1;i<=n;i++)if (save[i]==0)player[i].hp=21474836;//永远无法击败死者 int GJ[5]={0,0,0,0,0};//记录被攻击者编号 int qx=0,qy=0,zx=0,zy=0;hidden();//输出实时变化 printfssbh(n);//输入 char l='/';if (kbhit())l=getch();m=0;//已死亡玩家判断 if ((l=='w'||l=='a'||l=='s'||l=='d'||l=='x'||l=='q'||l=='e'||l=='z'||l=='c')&&save[1]==0)l='/';if ((l=='u'||l=='i'||l=='o'||l=='j'||l=='k'||l=='l'||l=='m'||l==','||l=='.')&&save[2]==0)l='/';if ((l>='1'&&l<='9')&&save[3]==0)l='/'; printfplayer("clear",n);switch(l){//Player 1case 'w':if (player[1].x-1>=4)player[1].x--;break;case 'a':if (player[1].y-1>=2)player[1].y--;break;case 's':if (player[1].x+1<=32)player[1].x++;break;case 'd':if (player[1].y+1<=100)player[1].y++;break;case 'x':{coutwhat(player[1].x,2,player[1].x,99,"-");coutwhat(2,player[1].y,31,player[1].y,"|");for(i=2;i<=4;i++)if (player[i].x==player[1].x||player[i].y==player[1].y)GJ[++m]=i;for(i=1;i<=m;i++){if (save[GJ[i]]==0)continue;player[1].energy+=random(10,30);player[GJ[i]].energy+random(5,15);sh=player[1].attack-player[GJ[i]].defence;player[1].sc+=sh;player[GJ[i]].cs+=sh;player[GJ[i]].hp-=sh;gotoxy(player[GJ[i]].x,player[GJ[i]].y);cout<<'-'<<sh;if (player[GJ[i]].hp<=0)save[GJ[i]]=0,player[1].kill++,player[1].energy+=350,r--;} for(i=1;i<=m;i++)gotoxy(player[GJ[i]].x,player[GJ[i]].y);cout<<"       ";coutwhat(player[1].x,2,player[1].x,100," ");coutwhat(2,player[1].y,31,player[1].y,"  ");break;} case 'q':{if (player[1].energy<1000)break;player[1].energy-=1000;m=random(367,763);player[2].energy-=m;if (n>=3)player[3].energy-=1000-m;sh=player[1].attack*3;for(i=2;i<=n;i++){if (save[i]==0)continue;gotoxy(player[i].x-2,player[i].y);cout<<'-'<<sh-player[i].defence;player[i].hp-=sh-player[i].defence;player[1].sc+=sh-player[i].defence;player[i].cs+=sh-player[i].defence;if (player[i].hp<=0)player[1].kill++,player[1].energy+=350,save[i]=0;}break;}case 'e':{if (player[1].energy<500)break;player[1].energy-=500;m=random(player[1].attack*3,player[1].attack*5);player[1].zl+=m;player[1].hp+=m;gotoxy(player[1].x-1,player[1].y);cout<<"+"<<m;break;}//Player 2case 'i':if (player[2].x-1>=1)player[2].x--;break;case 'j':if (player[2].y-1>=1)player[2].y--;break;case 'k':if (player[2].x+1<=32)player[2].x++;break;case 'l':if (player[2].y+1<=100)player[2].y++;break;case ',':{qx=player[2].x-5;qy=player[2].y-5;zx=player[2].x+5;zy=player[2].y+5;if (qx<=2)qx=2;if (qx>=32)qx=32;if (qy<=2)qy=2;if (qy>=100)qy=100;if (zx<=2)zx=2;if (zx>=32)zx=32;if (zy<=2)zy=2;if (zy>=100)zy=100;coutwhat(qx,qy,zx,zy,"#");if (player[1].x>=qx&&player[1].x<=zx&&player[1].y>=qy&&player[1].y<=zy&&save[1]==1)GJ[++m]=1;for(i=3;i<=n;i++)if (player[i].x>=qx&&player[i].x<=zx&&player[i].y>=qy&&player[i].y<=zy&&save[i]==1)GJ[++m]=i;for(i=1;i<=m;i++){player[2].energy+=random(10,30);player[GJ[i]].energy+random(5,15);sh=player[2].attack-player[GJ[i]].defence;player[2].sc+=sh;gotoxy(player[GJ[i]].x,player[GJ[i]].y);cout<<'-'<<sh;player[GJ[i]].cs+=sh;player[GJ[i]].hp-=sh;if (player[GJ[i]].hp<=0)save[GJ[i]]=0,player[2].kill++,player[2].energy+=350,r--;} for(i=1;i<=m;i++)gotoxy(player[GJ[i]].x,player[GJ[i]].y);cout<<"       ";coutwhat(qx,qy,zx,zy," ");break;} case 'u':{if (player[2].energy<1000)break;player[2].energy-=1000;sh=player[2].attack*3.5;gotoxy(player[1].x-2,player[1].y);cout<<'-'<<sh-player[1].defence;player[1].hp-=sh-player[1].defence;player[1].cs+=sh-player[1].defence;player[2].sc+=sh-player[1].defence;for(i=3;i<=n;i++){gotoxy(player[i].x-2,player[i].y);cout<<'-'<<sh-player[i].defence;player[i].hp-=sh-player[i].defence;player[i].cs+=sh-player[i].defence;player[2].sc+=sh-player[i].defence;}sh*=(n-1);gotoxy(player[2].x-1,player[2].y);cout<<'+'<<sh;player[2].hp+=sh;player[2].zl+=sh;break;}case 'o':{if (player[2].energy<500)break;player[2].energy-=500;m=random(player[2].attack*3,player[2].attack*5);player[2].zl+=m;player[2].hp+=m;gotoxy(player[2].x-1,player[2].y);cout<<"+"<<m;break;}//Player 3case '1':if (player[3].x-1>=1)player[3].x--;break;case '2':if (player[3].y-1>=1)player[3].y--;break;case '3':if (player[3].x+1<=32)player[3].x++;break;case '4':if (player[3].y+1<=100)player[3].y++;break;case '5':{dom=random(1,n);while(m==3||save[m]==0);player[3].energy+=random(10,30);player[m].energy+random(5,15);sh=player[3].attack-player[m].defence;player[3].sc+=sh;gotoxy(player[m].x-2,player[m].y);cout<<'-'<<sh;player[m].cs+=sh;player[m].hp-=sh;if (player[m].hp<=0)save[m]=0,player[3].kill++,player[3].energy+=350,r--;gotoxy(player[m].x-2,player[m].y);cout<<"       ";break;}case '6':{if (player[3].energy<1000)break;player[3].energy-=1000;m=0;for(i=1;i<=n;i++)if (i==3)continue;elseif (player[i].hp*100/player[i].HP<=24){GJ[++m]=i;}if (m==0){do m=random(1,n);while(m==3);sh=player[3].attack*5.6;player[m].hp-=sh;player[m].cs+=sh;player[3].sc+=sh;break;}else{m=GJ[random(1,m)];player[3].sc+=player[m].hp;player[m].cs+=player[m].hp;player[m].hp=0;save[m]=0;player[3].kill++,player[3].energy+=350,r--;break;}break;}case '7':{if (player[3].energy<500)break;player[3].energy-=500;m=random(player[3].attack*3,player[3].attack*5);player[3].zl+=m;player[3].hp+=m;gotoxy(player[3].x-1,player[3].y);cout<<"+"<<m;break;}}printfplayer("printf",n);}for(i=1;i<=n;i++)if (save[i])break;return i;
}
int main()
{srand(time(0));hidden();int n,i,win;bluecout<<"\t\t\t\t多人射击游戏"<<endl;redcout<<"请用全屏玩"<<endl; originalprintf("请选择游戏人数:\n");greencout<<"1.";white cout<<"2人"<<endl;greencout<<"2.";white cout<<"3人"<<endl;char m;dom=_getch();while(!(m>='1'&&m<='2'));n=m-'0'+1;system("cls"); player[1].x=1*random(6,8),player[1].y=1*random(6,8),player[1].HP=random(450000,678901),player[1].hp=player[1].HP,player[1].attack=random(3500,5500),player[1].defence=random(600,800);player[2].x=2*random(6,8),player[2].y=2*random(6,8),player[2].HP=random(670000,1000000),player[2].hp=player[2].HP,player[2].attack=random(2700,4600),player[2].defence=random(750,900);player[3].x=3*random(6,8),player[3].y=3*random(6,8),player[3].HP=random(389000,630000),player[3].hp=player[3].HP,player[3].attack=random(4800,6700),player[3].defence=random(540,700);player[4].x=4*random(6,8),player[4].y=4*random(6,8);cout<<"操作方式:\n";cout<<"Player 1\n";cout<<"上移:W\n";cout<<"左移:A\n";cout<<"下移:S\n";cout<<"右移:D\n";cout<<"攻击:X\n";cout<<"技能:Q、E\n";cout<<"技能描述\n";cout<<"Q湮灭枷锁:对其他1~2名敌人造成300%attack伤害,并令第一个目标失去367~763点能量,如果还有其它玩家则令其中一人失去与之前一人总和1000点能量\n";cout<<"E自疗:立刻恢复350%~550%攻击的血量\n";cout<<"攻击范围:十字架攻击(同一行或同一列上的敌人受伤)\n";cout<<"特点:血量较高,攻击一般,防御一般,攻击范围较广,适合远战\n";cout<<"---------------------------------------------------------------------------\n";cout<<"Player 2\n";cout<<"上移:I\n";cout<<"左移:J\n";cout<<"下移:K\n";cout<<"右移:L\n";cout<<"攻击:<,\n";cout<<"技能:U、O\n";cout<<"技能描述\n";cout<<"U魔法炮弹:对其它所有敌人造成350%attack伤害,并恢复伤害总量100%的生命\n";cout<<"O自疗:立刻恢复350%~550%攻击的血量\n";cout<<"攻击范围:周围10*10的小范围攻击\n";cout<<"特点:血量极高,攻击较低,防御较低,适合近战\n";cout<<"---------------------------------------------------------------------------\n";cout<<"Player 3\n";cout<<"上移:1\n";cout<<"左移:2\n";cout<<"下移:3\n";cout<<"右移:4\n";cout<<"攻击:5\n";cout<<"技能:6、7\n";cout<<"技能描述\n";cout<<"6斩杀:秒杀随机一名生命低于24%的敌人,如果没有,则对随机一名敌人造成560%attack真实伤害\n";cout<<"7自疗:立刻恢复350%~550%攻击的血量\n";cout<<"攻击范围:随机攻击场上任意一人\n";cout<<"特点:血量较低,防御较低,攻击极高,单挑无敌\n"; cout<<"---------------------------------------------------------------------------\n";Sleep(2000);_getch();system("cls");win=PVP(n);printf("%d win!",win);Sleep(5000);system("cls");for(i=1;i<=n;i++){printf("Player %d\n",i);if (i==win)printf("\b( WIN )\n");printf("输出:%d\n",player[i].sc);printf("治疗:%d\n",player[i].zl);printf("承伤:%d\n",player[i].cs);printf("---------------------------\n");}Sleep(5000);return 0;
}

用DEVC++写射击游戏相关推荐

  1. 太空射击unity工程素材文件 飞机大战 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本

    飞机大战素材 太空大战unity工程文件 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本 希望能对初学者提供帮助,代码根据教材以及out了的代码更新了, ...

  2. java写枪战游戏,Java版星球大战游戏(横向射击)

    Java版星球大战游戏(横向射击) 准备逐步整理一下手中的第三方Java游戏代码,将能用的部分融入到LGame里去,没有能用部分的就直接删掉. 但无论程式难易如何,也是原作者一番心血,不应将它们弃如敝 ...

  3. java写枪战游戏_Java基于Swing实现的打猎射击游戏代码

    本文实例讲述了Java基于Swing实现的打猎射击游戏代码.分享给大家供大家参考. 具体实现代码如下:package Game; import java.awt.Graphics; import ja ...

  4. 用javascript实现的纵版飞行射击游戏—《天机》

    花了一个半月的时间用javascript完成了这款web版飞行射击游戏,游戏效果接近一般的客户端游戏,不过对机器的要求稍微高点点,主要是CPU,最好在1.5GHZ以上,不然可能会比较卡,支持IE.FF ...

  5. bat射击游戏代码_这张图打开就是3D射击游戏,我是服气的

    「本期内容标签」 安卓 iOS 电脑 小程序 网站 游戏 教程 今天这个标题好好解读一下,一张图片,里面隐藏了一个3D射击游戏. 首先图片大小应该不太大,那么一个3D射击游戏怎么能隐藏到图片中去?或者 ...

  6. cocos2d-x游戏实例(22)-纵版射击游戏(9)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续上一篇的纵版射击游戏,本篇加入几个敌人的类 ...

  7. cocos2d-x游戏实例(18)-纵版射击游戏(5)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续上一篇的纵版射击游戏,本篇加入子弹逻辑,和 ...

  8. cocos2d-x游戏实例(17)-纵版射击游戏(4)

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续上一篇的纵版射击游戏,本篇讲解加入子弹,效 ...

  9. Unity 4 3 制作一个2D横版射击游戏 2

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在上一篇 ...

最新文章

  1. Codeforces 895C - Square Subsets
  2. c语言1至1000能被7或11 个数208 数下来没有208个,数学高手看过来:10000以内不能被3,5,7,9,11中任何一? 爱问知识人...
  3. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
  4. CF525D-Arthur and Walls【贪心】
  5. Android Camera 摄像 demo
  6. 【报告分享】数据大治理-毕马威阿里研究院.pdf(附下载链接)
  7. 【特色团队采访】1+1+1>3?看新人团队如何高效合作
  8. Flutter代码锦囊---集中管理路由与导航
  9. Selenium爬虫 -- 用户动态数据爬取
  10. Wke阅读日记1--简介
  11. 相关性和显著性检验学习笔记
  12. linux服务器鼠标键盘没反应,Fedora 键盘鼠标输入没反应及解决办法
  13. 期货业-期货市场的产生
  14. 几种比较好看的颜色代码
  15. 用c语言求五位回文数,C语言求回文数(详解版)
  16. 过滤:sql、敏感词、html、js、css
  17. 除夕跨年烟花特效[原创]
  18. shell编程100例(附PDF下载)
  19. Quantal Response Equilibrium调研
  20. java书签_Java 操作Word书签(一):添加、删除、读取书签

热门文章

  1. windows service.bat java 内存设置_Tomcat加大内存设置从windows服务启动不生效的问题...
  2. 百度地图 web 开发 BMap.point格式
  3. BMap添加海量点数据,BMap.Point携带数据
  4. 裴礼文数学分析中的典型问题与方法练习 1.1.5 解答貌似有问题.
  5. Android使用文件管理器打开指定文件夹,浏览里面的内容
  6. 做快乐的程序员 - 李战 在淘宝网的一次讲座
  7. 《Python之禅》的翻译和解释
  8. IOS开发之——手动设置屏幕旋转
  9. B-spline曲线基函数计算Matlab程序
  10. 成都办理或者补办社保卡的秘籍