前言
各位dalao们好!!!我是yuexingfei_111,目前是一个五年级滴小鞋生,这是本蒻蒟第一次发博客,望各位dalao指导!!!求个关注!!!!!!!!!!!!!!!!!
想法
本人是一个热爱MC的4年资深新玩家,爱玩起床。某天,本人突发奇想,想用C++做一个起床战争,但......
没在网上搜到.......................................
所以,本人用了所学的所有知识,耗时一周,用了500行左右的代码做了一个起床!!!
废话多说,上代码!!!
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
char a[50][50] = {"OOOOOOOOOOOOOOOOOOOO",
"OA O",
"O H O O",
"O OOOOO O",
"O O R O",
"O WO",
"OOOOOOOOOOOOOOOOOOOO",
};
struct Player {
int shengming, gongji, fangyu;
};
Player P1, P2;
bool Aw = true, Ww = true;
int x = 2, y = 2, p = 4, q = 17, n = 1, m = 1, c = 5, b = 18, sx = 30, sy = 30, gx = 30, gy = 30, fx = 30, fy = 30;
void out() {
system("cls");
for (int i = 0; i <= 7; i++) {
for (int j = 0; j <= 20; j++) {
printf ("%c", a[i][j]);
}
switch (i) {
case 0:
printf (" H:玩家1(WASD移动)");
break;
case 1:
printf (" A:H的床");
break;
case 2:
printf (" R:玩家2(IJKL移动)");
break;
case 3:
printf (" W:R的床");
break;
case 4:
printf (" O:墙壁");
break;
case 5:
printf (" N:增加攻击");
break;
case 6:
printf (" F:增加防御");
break;
case 7:
printf (" S:增加生命");
break;
}
printf ("\n");
}
printf ("H:\n生命:%d\n攻击:%d\n防御:%d\n\n", P1.shengming, P1.gongji, P1.fangyu);
printf ("R:\n生命:%d\n攻击:%d\n防御:%d\n\n", P2.shengming, P2.gongji, P2.fangyu);
if (Aw) {
printf ("H床:YES\n");
} else {
printf ("H床:NO\n");
}
if (Ww) {
printf ("R床:YES\n");
} else {
printf ("R床:NO\n");
}
}
void SetFont(int size) {
CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof cfi;
cfi.nFont = 0;
cfi.dwFontSize.X = 0;
cfi.dwFontSize.Y = size;//设置字体大小
cfi.FontFamily = FF_DONTCARE;
cfi.FontWeight = FW_NORMAL; //字体粗细
wcscpy_s(cfi.FaceName, L"宋体");//设置字体
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_FONT_INFO consoleCurrentFont;
GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
}
void xuan() {
for (int i = 1; i <= 2; i++) {
if (i == 1) {
printf ("请H选择!(输入前面的序号)\n");
} else {
printf ("请R选择!(输入前面的序号)\n");
}
printf ("1.战士\n生命:200\n攻击:50\n防御:50\n");
printf ("2.铠甲人\n生命:150\n攻击:40\n防御:80\n");
printf ("3.X原型机\n生命:250\n攻击:40\n防御:40\n");
printf ("4.H原型机\n生命:130\n攻击:45\n防御:85\n");
printf ("5.X束光机\n生命:135\n攻击:65\n防御:40\n");
int d;
scanf ("%d", &d);
switch (d) {
case 1:
if (i == 1) {
P1.shengming = 200;
P1.gongji = 50;
P1.fangyu = 50;
} else {
P2.shengming = 200;
P2.gongji = 50;
P2.fangyu = 50;
}
break;
case 2:
if (i == 1) {
P1.shengming = 150;
P1.gongji = 40;
P1.fangyu = 80;
} else {
P2.shengming = 150;
P2.gongji = 40;
P2.fangyu = 80;
}
break;
case 3:
if (i == 1) {
P1.shengming = 250;
P1.gongji = 40;
P1.fangyu = 40;
} else {
P2.shengming = 250;
P2.gongji = 40;
P2.fangyu = 40;
}
break;
case 4:
if (i == 1) {
P1.shengming = 130;
P1.gongji = 45;
P1.fangyu = 85;
} else {
P2.shengming = 130;
P2.gongji = 45;
P2.fangyu = 85;
}
break;
case 5:
if (i == 1) {
P1.shengming = 135;
P1.gongji = 65;
P1.fangyu = 40;
} else {
P2.shengming = 135;
P2.gongji = 65;
P2.fangyu = 40;
}
break;
}
system("cls");
}
}
int zhan() {
system("cls");
printf ("交战中......\n");
Sleep(2500);
int P1s = P1.shengming, P1g = P1.gongji, P1f = P1.fangyu, P2s = P2.shengming, P2g = P2.gongji, P2f = P2.fangyu;
while (1) {
if (P2g - P1f > 0) {
P1s = P1s - (P2g - P1f);
}
if (P1g - P2f > 0) {
P2s = P2s - (P1g - P2f);
}
if (P1.gongji <= P2.fangyu && P1.fangyu >= P2.gongji) {
printf ("无法交战!\n");
Sleep(1000);
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
return 100;
}
if (P1s <= 0 && P2s > 0) {
printf ("H狗带了!\n");
Sleep(5000);
if (Aw) {
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
if (p == x && q == y) {
p = 5, q = 9;
a[p][q] = 'R';
}
return 99;
} else {
return 1;
}
}
if (P2s <= 0 && P1s > 0) {
printf ("R狗带了!\n");
Sleep(5000);
if (Ww) {
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
if (p == x && q == y) {
x = 1, y = 9;
a[x][y] = 'H';
}
return 99;
} else {
return 2;
}
}
if (P2s <= 0 && P1s <= 0) {
printf ("都狗带了!\n");
Sleep(5000);
if (Ww && Aw) {
a[p][q] = ' ';
p = 4, q = 17;
a[p][q] = 'R';
a[x][y] = ' ';
x = 2, y = 2;
a[x][y] = 'H';
return 99;
}
if (Ww && !Aw) {
return 2;
}
if (!Ww && Aw) {
return 1;
}
if (!Ww && !Aw) {
return 3;
}
}
}
}
void win(int g) {
if (g == 1) {
printf("\'R\' 赢了!\n");
Sleep(5000);
system("pause");
} else {
if (g == 2) {
printf("\'H\' 赢了!\n");
Sleep(5000);
system("pause");
} else {
printf("平局!\n");
Sleep(5000);
system("pause");
}
}
}
void rans(char cha) {
int f = rand() % 2;
a[sx][sy] = cha;
sx = 35, sy = 35;
switch (f) {
case 0:
sx = 5, sy = 1;
break;
case 1:
sx = 1, sy = 18;
break;
}
a[sx][sy] = 'S';
}
void rang(char cha) {
int ff = rand() % 3;
a[gx][gy] = cha;
gx = 35, gy = 35;
switch (ff) {
case 0:
gx = 2, gy = 15;
break;
case 1:
gx = 2, gy = 8;
break;
case 2:
gx = 4, gy = 10;
break;
}
a[gx][gy] = 'N';
}
void ranf(char cha) {
int fff = rand() % 3;
a[fx][fy] = cha;
fx = 35, fy = 35;
switch (fff) {
case 0:
fx = 2, fy = 10;
break;
case 1:
fx = 4, fy = 4;
break;
case 2:
fx = 4, fy = 8;
break;
}
a[fx][fy] = 'F';
}
int main() {
system("title 起床战争");
SetFont(25);
srand(time(NULL));
system("color 0a");
xuan();
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
CursorInfo.bVisible = false; //隐藏控制台光标
SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
out();
ranf(' ');
rang(' ');
rans(' ');
while (1) {
if (GetAsyncKeyState('S')) {
if (a[x + 1][y] != 'O') {
a[x][y] = ' ';
x++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('D')) {
if (a[x][y + 1] != 'O') {
a[x][y] = ' ';
y++;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('A')) {
if (a[x][y - 1] != 'O') {
a[x][y] = ' ';
y--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('W')) {
if (a[x - 1][y] != 'O') {
a[x][y] = ' ';
x--;
a[x][y] = 'H';
}
}
if (GetAsyncKeyState('K')) {
if (a[p + 1][q] != 'O') {
a[p][q] = ' ';
p++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('L')) {
if (a[p][q + 1] != 'O') {
a[p][q] = ' ';
q++;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('J')) {
if (a[p][q - 1] != 'O') {
a[p][q] = ' ';
q--;
a[p][q] = 'R';
}
}
if (GetAsyncKeyState('I')) {
if (a[p - 1][q] != 'O') {
a[p][q] = ' ';
p--;
a[p][q] = 'R';
}
}
if (x == p && y == q) {
int jie = zhan();
if (jie == 1) {
win(1);
break;
} else {
if (jie == 2) {
win(2);
break;
} else {
if (jie < 99) {
win(3);
break;
}
}
}
}
if (x == c && y == b) {
a[c][b] = ' ';
c = 48, b = 49;
Ww = false;
}
if (p == n && q == m) {
a[n][m] = ' ';
n = 39, m = 35;
Aw = false;
}
if (c == p && b == q && Ww) {
a[c][b] = 'R';
while (1) {
if (!(c == p && b == q))
a[c][b] = 'W';
break;
}
} else {
a[c][b] = 'W';
}
if (n == x && m == y && Aw) {
a[n][m] = 'H';
while (1) {
if (!(n == x && m == y))
a[n][m] = 'A';
break;
}
} else {
a[n][m] = 'A';
}
if (sx == x && sy == y) {
P1.shengming += 5;
Sleep(10);
rans('H');
}
if (sx == p && sy == q) {
P2.shengming += 5;
Sleep(10);
rans('R');
}
if (gx == x && gy == y) {
P1.gongji += 5;
rang('H');
}
if (gx == p && gy == q) {
P2.gongji += 5;
rang('R');
}
if (fx == x && fy == y) {
P1.fangyu += 5;
ranf('H');
}
if (fx == p && fy == q) {
P2.fangyu += 5;
ranf('R');
}
out();
}
return 0;
}
有不满请联系我!!!
会逐渐更新...
含泪结束
感谢大家的支持!