最近又学了一些c++的知识,感觉自己厉害了好多,然后我当机立断地写了2个c++小游戏
废话不多说,上代码!
1.坦克大战
双人游戏
玩家A用wsad移动,q发射
玩家B用上下左右移动,空格发射
#include<iostream>
#include"windows.h"
#include<ctime>
#include<cstdlib>
#include<cstdio>
using namespace std;
char o_map[11][21]={"####################",
"# # # # # #",
"# # ### ##",
"# # # #",
"# # #",
"# # # # #",
"## #",
"# # # ###",
"# # #",
"####################"};
char map[11][21];
void print_map(){
for(int i=0;i<10;i++){
cout<<map[i]<<endl;
}
}
void copy_map(){
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
map[i][j]=o_map[i][j];
}
}
}
int main(){
system("cls");
srand(time(0));
char p1f='d';//u=上 d=下 r=右 l=左
char p2f='l';
int p1_x=1,p1_y=1;
int p2_x=18,p2_y=8;
int p1_z=1;
int p2_z=1;
int p1_zcount=0;
int p2_zcount=0;
char p1_zf[20];
char p2_zf[20];
int p1_hp=6;
int p2_hp=6;
int p1_zx[20]={0},p1_zy[20]={0},p1z[20]={0};
int p2_zx[20]={0},p2_zy[20]={0},p2z[20]={0};
bool z_t=false;
int tou=10;
while(true){
system("cls");
copy_map();
for(int i=0;i<20;i++){
if(p1z[i]==1){
if(p1_z==1){
map[p1_zy[i]][p1_zx[i]]='o';
}else if(p1_z==2){
map[p1_zy[i]][p1_zx[i]]='X';
}
}
}
for(int i=0;i<20;i++){
if(p2z[i]==1){
if(p2_z==1){
map[p2_zy[i]][p2_zx[i]]='e';
}else if(p2_z==2){
map[p2_zy[i]][p2_zx[i]]='Y';
}
}
}
map[p1_y][p1_x]='A';
map[p2_y][p2_x]='B';
print_map();
cout<<"p1玩家(A)血量:";
for(int i=1;i<=p1_hp;i++){
printf("■");
}for(int i=6-p1_hp;i>0;i--){
printf("□");
}
cout<<endl;
cout<<"p2玩家(B)血量:";
for(int i=1;i<=p2_hp;i++){
printf("■");
}for(int i=6-p2_hp;i>0;i--){
printf("□");
}
if(tou==1){
cout<<endl;
cout<<"骰子!"<<endl;
Sleep(2000);
cout<<"让我们投一次!"<<endl;
tou=rand()%6+1;
cout<<"---"<<endl;
if(tou==1){
cout<<"|1|"<<endl;
}else if(tou==2){
cout<<"|2|"<<endl;
}else if(tou==3){
cout<<"|3|"<<endl;
}else if(tou==4){
cout<<"|4|"<<endl;
}else if(tou==5){
cout<<"|5|"<<endl;
}else if(tou==6){
cout<<"|6|"<<endl;
}
cout<<"---"<<endl;
bool t_t=false;
int cheng_or_jiang;
if(tou==1){
cout<<"其中一方将会得到来超级无敌钢体电磁炮!!(按三次发射按钮发射一电磁炮,伤害为4)"<<endl;
cheng_or_jiang=1;
t_t=true;
}else if(tou==2){
cout<<"其中一方将会得到超级无敌硬答辩炮!!(按一次发射按钮发射一子弹,伤害为1)"<<endl;
cheng_or_jiang=2;
t_t=true;
}else if(tou==3){
cout<<"其中一方将会回复2点生命!"<<endl;
cheng_or_jiang=3;
t_t=true;
}else if(tou==4){
cout<<"其中一方将会扣除1点生命!"<<endl;
cheng_or_jiang=4;
t_t=true;
}else if(tou==5 || tou==6){
cout<<"啥也没有......"<<endl;
}
Sleep(3000);
if(t_t){
tou=rand()%2+1;
if(tou==1){
if(cheng_or_jiang==1){
p1_z=2;
cout<<"p1获得了电磁炮!!";
}else if(cheng_or_jiang==2){
p1_z=1;
cout<<"p1获得了普通炮!!";
}else if(cheng_or_jiang==3){
p1_hp+=2;
if(p1_hp>6) p1_hp=6;
cout<<"p1回复了2点生命!!";
}else if(cheng_or_jiang==4){
p1_hp-=1;
cout<<"p1扣除了1点生命!!";
}
}else if(tou==2){
if(cheng_or_jiang==1){
p2_z=2;
cout<<"p2获得了电磁炮!!";
}else if(cheng_or_jiang==2){
p2_z=1;
cout<<"p2获得了普通炮!!";
}else if(cheng_or_jiang==3){
p2_hp+=2;
if(p2_hp>6) p2_hp=6;
cout<<"p2回复了2点生命!!";
}else if(cheng_or_jiang==4){
p2_hp-=1;
cout<<"p2扣除了1点生命!!";
}
}
}
Sleep(2000);
}
Sleep(100);
if(p1_hp<=0){
MessageBox(0,"p2玩家(B)胜利!!","提示",MB_OK);
return 0;
}
if(p2_hp<=0){
MessageBox(0,"p1玩家(A)胜利!!","提示",MB_OK);
return 0;
}
tou=10;
//p2玩家
if(GetAsyncKeyState(VK_LEFT)&0x8000 && (map[p2_y][p2_x-1]!='#' && map[p2_y][p2_x-1]!='A')){
p2_x--;
p2f='l';
tou=rand()%20+1;
}
if(GetAsyncKeyState(VK_RIGHT)&0x8000 && (map[p2_y][p2_x+1]!='#' && map[p2_y][p2_x+1]!='A')){
p2_x++;
p2f='r';
tou=rand()%20+1;
}
if(GetAsyncKeyState(VK_UP)&0x8000 && (map[p2_y-1][p2_x]!='#' && map[p2_y-1][p2_x]!='A')){
p2_y--;
p2f='u';
tou=rand()%20+1;
}
if(GetAsyncKeyState(VK_DOWN)&0x8000 && (map[p2_y+1][p2_x]!='#' && map[p2_y+1][p2_x]!='A')){
p2_y++;
p2f='d';
tou=rand()%20+1;
}
//p1玩家
if(GetAsyncKeyState('A')&0x8000 && (map[p1_y][p1_x-1]!='#' && map[p1_y][p1_x-1]!='B')){
p1_x--;
p1f='l';
tou=rand()%20+1;
}
if(GetAsyncKeyState('D')&0x8000 && (map[p1_y][p1_x+1]!='#' && map[p1_y][p1_x+1]!='B')){
p1_x++;
p1f='r';
tou=rand()%20+1;
}
if(GetAsyncKeyState('W')&0x8000 && (map[p1_y-1][p1_x]!='#' && map[p1_y-1][p1_x]!='B')){
p1_y--;
p1f='u';
tou=rand()%20+1;
}
if(GetAsyncKeyState('S')&0x8000 && (map[p1_y+1][p1_x]!='#' && map[p1_y+1][p1_x]!='B')){
p1_y++;
p1f='d';
tou=rand()%20+1;
}
//子弹移动
if(z_t){
z_t=false;
for(int i=0;i<20;i++){
if(p1z[i]==1){
if(p1_zf[i]=='u') p1_zy[i]--;
else if(p1_zf[i]=='d') p1_zy[i]++;
else if(p1_zf[i]=='r') p1_zx[i]++;
else if(p1_zf[i]=='l') p1_zx[i]--;
if(map[p1_zy[i]][p1_zx[i]]=='#' || map[p1_zy[i]][p1_zx[i]]=='B'){
if(map[p1_zy[i]][p1_zx[i]]=='B'){
if(p1_z==1){
p2_hp--;
}else if(p1_z==2){
p2_hp-=4;
}
}
p1z[i]=0;
}
}
if(p2z[i]==1){
if(p2_zf[i]=='u') p2_zy[i]--;
else if(p2_zf[i]=='d') p2_zy[i]++;
else if(p2_zf[i]=='r') p2_zx[i]++;
else if(p2_zf[i]=='l') p2_zx[i]--;
if(map[p2_zy[i]][p2_zx[i]]=='#' || map[p2_zy[i]][p2_zx[i]]=='A'){
if(map[p2_zy[i]][p2_zx[i]]=='A'){
if(p2_z==1){
p1_hp--;
}else if(p2_z==2){
p1_hp-=4;
}
}
p2z[i]=0;
}
}
}
}else{
z_t=true;
}
//发射子弹
if(GetAsyncKeyState('Q')&0x8000){
tou=rand()%30+1;
if((p1_z==2 && p1_zcount%3==0) || p1_z==1){
int p1_ii=-1;
for(int i=0;i<20;i++){
if(p1z[i]==0){
p1_ii=i;
break;
}
}
if(p1_ii>=0){
p1z[p1_ii]=1;
p1_zf[p1_ii]=p1f;
if(p1_zf[p1_ii]=='u'){
p1_zy[p1_ii]=p1_y-1;
p1_zx[p1_ii]=p1_x;
} else if(p1_zf[p1_ii]=='d'){
p1_zy[p1_ii]=p1_y+1;
p1_zx[p1_ii]=p1_x;
} else if(p1_zf[p1_ii]=='r'){
p1_zx[p1_ii]=p1_x+1;
p1_zy[p1_ii]=p1_y;
} else if(p1_zf[p1_ii]=='l'){
p1_zx[p1_ii]=p1_x-1;
p1_zy[p1_ii]=p1_y;
}
}
}
p1_zcount++;
}
if(GetAsyncKeyState(VK_SPACE)&0x8000){
tou=rand()%30+1;
if((p2_z==2 && p2_zcount%3==0) || p2_z==1){
int p2_ii=-1;
for(int i=0;i<20;i++){
if(p2z[i]==0){
p2_ii=i;
break;
}
}
if(p2_ii>=0){
p2z[p2_ii]=1;
p2_zf[p2_ii]=p2f;
if(p2_zf[p2_ii]=='u'){
p2_zy[p2_ii]=p2_y-1;
p2_zx[p2_ii]=p2_x;
} else if(p2_zf[p2_ii]=='d'){
p2_zy[p2_ii]=p2_y+1;
p2_zx[p2_ii]=p2_x;
} else if(p2_zf[p2_ii]=='r'){
p2_zx[p2_ii]=p2_x+1;
p2_zy[p2_ii]=p2_y;
} else if(p2_zf[p2_ii]=='l'){
p2_zx[p2_ii]=p2_x-1;
p2_zy[p2_ii]=p2_y;
}
}
}
p2_zcount++;
}
}
}
2.飞翔的小鸟
单人游戏
空格让小鸟向上飞
#include<iostream>
#include<windows.h>
#include<ctime>
#include<cstdlib>
using namespace std;
int p_y;
int p_x;
char map[22][32];
int count=0;
void clear_map(){
for(int i=0;i<20;i++){
for(int j=0;j<40;j++){
map[i][j]=' ';
}
}
for(int i=0;i<30;i++){
map[0][i]='#';
map[19][i]='#';
}
for(int i=0;i<20;i++){
map[i][0]='#';
map[i][29]='#';
}
}
void game_over(){
system("cls");
system("color 74");
Sleep(3000);
cout<<endl<<endl<<endl<<endl<<endl;
cout<<" Game Over!"<<endl;
cout<<" 你飞过了"<<count<<"根管子"<<endl;
Sleep(5000);
}
void draw_p(){
for(int i=1;i<=p_y;i++){
map[i][p_x]='|';map[i][p_x+1]='|';
}
map[p_y+1][p_x-1]='=';map[p_y+1][p_x]='=';
map[p_y+1][p_x+1]='=';map[p_y+1][p_x+2]='=';
map[p_y+7][p_x-1]='=';map[p_y+7][p_x]='=';
map[p_y+7][p_x+1]='=';map[p_y+7][p_x+2]='=';
for(int i=p_y+8;i<19;i++){
map[i][p_x]='|';map[i][p_x+1]='|';
}
}
int main(){
system("color 70");
srand(time(0));
int b_y=9;
bool p=true;
while(true){
system("cls");
clear_map();
bool bird=false;
map[b_y][10]='B';
if(p){
p_y=rand()%13;
p_x=26;
draw_p();
p=false;
}else{
p_x--;
draw_p();
if(p_x==9){
count++;
}
if(p_x<4){
p=true;
}
}
for(int i=0;i<20;i++){
for(int j=0;j<30;j++){
cout<<map[i][j];
}
cout<<endl;
}
cout<<"得分:"<<count;
if(GetAsyncKeyState(VK_SPACE)&0x8000){
bird=true;
}else{
bird=false;
}
if(bird){
b_y--;
}else{
b_y++;
}
if(map[b_y][10]=='|' || map[b_y][10]=='=' || b_y==20 || b_y==0){
game_over();
return 0;
}
Sleep(10);
}
}