纯自制C++游戏--天空岛 1.3.6
2024-10-06 17:40:51
发布于:上海
1.0.0 初始版本
1.0.1 制作查看装备
1.0.2 加入实时CD显示
1.0.3 修复查看装备后无法退出的Bug
1.0.4 加入可以减CD的商品
1.0.5 修复玩完游戏自动退出的Bug
1.0.6 加入玩完游戏获得金币的机制
1.0.7 加入敌方伤害
1.0.8 使敌方伤害随机
1.0.9 加大了敌方伤害
1.1.0 降低难度
1.1.1 加入未购买侦测
1.1.2 提升了敌方血量合理性
1.1.3 更新机制
1.1.4 加入存档,读档
1.1.5 修复无法存档的Bug
1.1.6 修复读档报错的Bug
1.1.7 优化存档
1.1.8 简化存档
1.1.9 优化代码
1.2.0 加入新商品
1.2.1 更新技能提示
1.2.2 加入可以增加伤害的商品
1.2.3 修复无法存档增加伤害的Bug
1.2.4 添加新商品
1.2.5 优化代码
1.2.6 加入英雄
1.2.7 优化存档码
1.2.8 优化代码
1.2.9 加入剧情
1.3.0 更新剧情,从 AK战神 更名为 天空岛
1.3.1 更新剧情
1.3.2 修复剧情
1.3.3 添加剧情提示
1.3.4 更新剧情
1.3.5 更新新手引导
1.3.6 增加一只姜强度
点赞催更
游玩方法:将其复制到Dev-C++
里运行 (也可以使用其他C++编译器,如Visual Studio Code
)
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<string>
#include<windows.h>
#include<cstdio>
#include<cmath>
#include<fstream>
using namespace std;
int x=100,coin=100,buy_time,cd_=0,buy[1010],kill_=0,player=0,game=0;
string name="花似雪",shop[10]={"血量(10血)","血量(20血)","血量(30血)","血量(50血)","缩短CD 1秒","缩短CD 2秒","伤害(1血)","伤害(2血)","角色(一只姜)"};
bool isKeyPressed(int key) {
return (GetAsyncKeyState(key)&0x8000)!=0;
}
void Slowsay(string a) {
int l=a.size();
for(int i=0;i<l;i++){
cout<<a[i];
Sleep(20);
}
cout<<endl;
Sleep(100);
}
void play_mode(){
srand(static_cast<unsigned int>(time(0)));
int n,ox=rand()%30+x-10,j=x,kill,choice,f=0,m_kill=0,f2=0;
string g;
double p=0,p1=0,p2=0,p3=0;
system("cls");
cout<<"是否参加新手教程\n1.是 2.否\n";
cin>>n;
if(n==1){
system("cls");
cout<<"新手引导:\n请按下 1 键使用普攻\n";
while(true){
if (isKeyPressed('1')) {
cout<<"我方使用普攻,造成了敌方1点伤害"<<endl;
break;
}
}
cout<<"请按下 2 键使用一技能\n";
while(true){
if (isKeyPressed('2')) {
if(player==0){
cout<<"我方使用一技能 滔滔火海,造成了敌方"<<10+kill_<<"点伤害"<<endl;
}
else if(player==1){
cout<<"我方使用一技能 眩晕药水,使敌方眩晕2秒"<<endl;
}
break;
}
}
cout<<"请按下 3 键使用二技能\n";
while(true){
if (isKeyPressed('3')) {
if(player==0){
cout<<"我方使用二技能 暴力破解,造成了敌方"<<12+kill_<<"点伤害"<<endl;
}
else if(player==1){
cout<<"我方使用二技能 绝命毒师,使敌方掉落了5枚金币,并造成了"<<5+kill_<<"点伤害"<<endl;
coin+=5;
}
break;
}
}
cout<<"请按下 4 键使用大招\n";
while(true){
if (isKeyPressed('4')) {
if(player==0){
cout<<"我方使用大招 水来土掩,造成了敌方"<<20+kill_<<"点伤害"<<endl;
}
else if(player==1){
cout<<"我方使用大招 摄魂余生,使敌方造成了每秒2点的持续性伤害"<<endl;
}
break;
}
}
system("pause");
}
system("cls");
cout<<"你的角色为:"<<name<<endl;
choice=rand()%3;
cout<<"敌方的角色为:";
if(choice==0){
cout<<"法兰西玫瑰\n";
}
else if(choice==1){
cout<<"复仇者_黑客_ZDZL\n";
}
else if(choice==2){
cout<<"陈臻武\n";
}
system("pause");
while(true){
f++;
f2++;
system("cls");
cout<<"我方血量:"<<x<<endl;
cout<<"敌方血量:"<<ox<<endl;
cout<<"普攻CD:"<<p<<endl;
cout<<"1技能CD:"<<p1<<endl;
cout<<"2技能CD:"<<p2<<endl;
cout<<"大招CD:"<<p3<<endl;
if (isKeyPressed('1')) {
if(p<=0){
cout<<"我方使用普攻,造成了敌方1点伤害"<<endl;
p=1;
ox-=1;
}
}
else if (isKeyPressed('2')) {
if(p1<=0){
if(player==0){
cout<<"我方使用一技能 滔滔火海,造成了敌方"<<10+kill_<<"点伤害"<<endl;
ox-=10+kill_;
}
else if(player==1){
cout<<"我方使用一技能 眩晕药水,使敌方眩晕2秒"<<endl;
f-=20;
}
p1=6-cd_;
}
}
else if (isKeyPressed('3')) {
if(p2<=0){
if(player==0){
cout<<"我方使用二技能 暴力破解,造成了敌方"<<12+kill_<<"点伤害"<<endl;
ox-=12+kill_;
}
else if(player==1){
cout<<"我方使用二技能 绝命毒师,使敌方掉落了5枚金币,并造成了"<<5+kill_<<"点伤害"<<endl;
ox-=5+kill_;
coin+=5;
}
p2=8-cd_;
}
}
else if (isKeyPressed('4')) {
if(p3<=0){
if(player==0){
cout<<"我方使用大招 水来土掩,造成了敌方"<<20+kill_<<"点伤害"<<endl;
ox-=20+kill_;
}
else if(player==1){
cout<<"我方使用大招 摄魂余生,使敌方造成了每秒2点的持续性伤害"<<endl;
m_kill*=2;
}
p3=12-cd_;
}
}
if(f2%10==0){
ox-=m_kill;
cout<<"我方造成了"<<m_kill<<"点的持续性伤害\n";
}
if(ox<=0){
cout<<"胜利!";
cout<<"\n你获得了100金币\n";
coin+=100;
x=j;
system("pause");
return;
}
else if(x<=0){
cout<<"失败!";
cout<<"\n你失去了20金币\n";
if(x-20>=0){
coin-=20;
}
x=j;
system("pause");
return;
}
if(f==5){
kill=rand()%2+2;
cout<<"敌方使用普攻,造成了"<<kill<<"点随机伤害";
x-=kill;
f=0;
}
Sleep(100);
if(p>0){
p-=0.1;
}
if(p1>0){
p1-=0.1;
}
if(p2>0){
p2-=0.1;
}
if(p3>0){
p3-=0.1;
}
}
}
void out_mode(){
system("cls");
cout<<"感谢游玩!";
exit(0);
}
int playing_mode(){
system("cls");
switch(game){
case 0:
Slowsay("往年的暮钟再次敲响……");
Sleep(1000);
Slowsay("“好冷啊。”你听到一个孩子在抱怨道。");
Sleep(200);
Slowsay("“再忍一忍,冬天去了就是春天了。”孩子的妈妈安慰道。");
Sleep(1000);
Slowsay("看到此景,你眉头一皱。");
Sleep(200);
Slowsay("因为人类还不知道,世界上即将没有春天。");
cout<<"第一章第一幕完成";
game++;
break;
case 1:
Slowsay("这里是天空岛第二帝国地北市西部镇,一个信仰水神——慕诗的偏僻小镇。");
Sleep(200);
Slowsay("天空岛的其他地方都被黑暗笼罩,被权重之人控制,再无生机……");
Sleep(200);
Slowsay("现在只有这里,还未被笼罩……");
Sleep(1000);
Slowsay("“新的一年开始了。”镇长说道。“愿慕诗保佑你。”");
Sleep(200);
Slowsay("下一秒,西部镇的守护龙——昭言身上泛出了棕光。");
Sleep(200);
Slowsay("“紧急事件!”镇长说道。“土元素入侵!”");
Sleep(1000);
Slowsay("信仰土元素的邻国——第三帝国,常年入侵第二帝国,平均每个月都会入侵一次。");
Sleep(1000);
Slowsay("事态紧急,镇长邀请你加入与第三帝国边攻军第六军团团长泰羽的战斗。");
system("pause");
system("cls");
cout<<"新手引导:\n请按下 1 键使用普攻\n";
while(true){
if (isKeyPressed('1')) {
cout<<"我方使用普攻,造成了敌方1点伤害"<<endl;
break;
}
}
cout<<"请按下 2 键使用一技能\n";
while(true){
if (isKeyPressed('2')) {
if(player==0){
cout<<"我方使用一技能 滔滔火海,造成了敌方"<<10+kill_<<"点伤害"<<endl;
}
else if(player==1){
cout<<"我方使用一技能 眩晕药水,使敌方眩晕2秒"<<endl;
}
break;
}
}
cout<<"请按下 3 键使用二技能\n";
while(true){
if (isKeyPressed('3')) {
if(player==0){
cout<<"我方使用二技能 暴力破解,造成了敌方"<<12+kill_<<"点伤害"<<endl;
}
else if(player==1){
cout<<"我方使用二技能 绝命毒师,使敌方掉落了5枚金币,并造成了"<<5+kill_<<"点伤害"<<endl;
coin+=5;
}
break;
}
}
cout<<"请按下 4 键使用大招\n";
while(true){
if (isKeyPressed('4')) {
if(player==0){
cout<<"我方使用大招 水来土掩,造成了敌方"<<20+kill_<<"点伤害"<<endl;
}
else if(player==1){
cout<<"我方使用大招 摄魂余生,使敌方造成了每秒2点的持续性伤害"<<endl;
}
break;
}
}
cout<<"泰羽已被击败\n";
system("pause");
system("cls");
Slowsay("你战胜泰羽之后,成为了西部镇的大英雄。");
Sleep(1000);
Slowsay("但有一天……");
cout<<"第一章第二幕完成";
game++;
break;
case 2:
Slowsay("风沙晃过……");
Sleep(1000);
Slowsay("慕诗已保护了西部镇千年不受黑暗的侵扰,但终究,黑暗还是来临了……");
Sleep(1000);
Slowsay("第三帝国所信仰的神——土神旭尧亲自率领了一支精兵南征第二帝国。");
Sleep(200);
Slowsay("那天,狂风大作,原本的河水变成了泥沙,突然一道龙卷风朝你袭来……");
cout<<"第一章第三幕完成";
game++;
break;
case 3:
Slowsay("死亡之日来临,你却浑然不知……");
Sleep(1000);
Slowsay("天上的漂浮的土堆预言了一切……");
Sleep(1000);
Slowsay("龙卷风来了……");
Sleep(1000);
Slowsay("……");
cout<<"第一章第四幕完成\n";
cout<<"第一章——水之故居 完成";
game++;
break;
default:
cout<<"暂未开发,敬请期待。\n";
system("pause");
return game;
}
cout<<"\n游玩剧情奖励:金币×20\n";
coin+=20;
system("pause");
return game;
}
void look_mode(){
char n;
bool flag=true;
system("cls");
cout<<"已购买:\n";
for(int i=0;i<buy_time;i++){
cout<<i+1<<"."<<shop[buy[i]]<<endl;
flag=false;
}
if(flag){
cout<<"空\n";
}
system("pause");
return;
}
void shop_mode(int sign){
int choice;
system("cls");
if(sign==1){
cout<<"金币不够,请重新购买\n";
}
else if(sign==2){
cout<<"输入错误,请重新输入\n";
}
cout<<"你现在有"<<coin<<"金币\n";
cout<<"1.血量(10血) 100金币\n2.血量(20血) 180金币\n3.血量(30血) 270金币\n4.血量(50血) 450金币\n5.缩短CD 1秒 350金币\n6.缩短CD 2秒 500金币\n7.伤害(1血) 400金币\n8.伤害(2血) 500金币\n9.角色(一只姜) 600金币\n10.返回主页面\n请问你要购买哪个?";
cin>>choice;
if(choice==1){
if(coin>=100){
coin-=100;
x+=10;
buy[buy_time]=0;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==2){
if(coin>=180){
coin-=180;
x+=20;
buy[buy_time]=1;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==3){
if(coin>=270){
coin-=270;
x+=30;
buy[buy_time]=2;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==4){
if(coin>=450){
coin-=450;
x+=50;
buy[buy_time]=3;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==5){
if(coin>=350){
coin-=350;
cd_+=1;
buy[buy_time]=4;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==6){
if(coin>=500){
coin-=500;
cd_+=2;
buy[buy_time]=5;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==7){
if(coin>=400){
coin-=400;
kill_+=1;
buy[buy_time]=6;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==8){
if(coin>=500){
coin-=500;
kill_+=1;
buy[buy_time]=7;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==9){
if(coin>=600){
coin-=600;
name="一只姜";
player=1;
buy[buy_time]=8;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==10){
return;
}
else{
shop_mode(2);
}
}
void load_mode(){
ofstream file("存档.code");
if (file.is_open()) {
file <<player<<" "<<coin<<" "<<x<<" "<<cd_<<" "<<buy_time<<" "<<kill_<<" "<<game;
for(int i=0;i<buy_time;i++){
file<<" "<<buy[i];
}
file.close();
}
}
void read_load_mode(){
ifstream file("存档.code");
if (file.is_open()) {
file >>player>> coin>>x>>cd_>>buy_time>>kill_>>game;
if(player==0){
name="花似雪";
}
else if(player==1){
name="一只姜";
}
for(int i=0;i<buy_time;i++){
file>>buy[i];
}
file.close();
}
}
void home(int into){
int n;
if(into==0){
cout<<"欢迎游玩 天空岛\n1.休闲模式 2.剧情模式 3.商店 4.退出 5.购买记录 6.存档 7.读档\n请输入选择:";
}
cin>>n;
switch(n){
case 1:
play_mode();
break;
case 2:
game=playing_mode();
break;
case 3:
shop_mode(0);
break;
case 4:
out_mode();
break;
case 5:
look_mode();
break;
case 6:
load_mode();
break;
case 7:
read_load_mode();
break;
default:
system("cls");
cout<<"请重新输入:";
home(1);
}
}
int main(){
while(true){
system("cls");
home(0);
}
}
都看到这了,还不点个赞!
全部评论 14
游戏最好发布到灌水区。学术板块一般用于交流学术问题。谢谢配合!
2024-09-03 来自 加拿大
2f********k
2024-08-29 来自 浙江
16662天前 来自 四川
0建议添加切换角色的模式——花似雪和一只姜互换
2024-10-23 来自 上海
0盲猜是个老师
2024-10-21 来自 浙江
0老师??
2024-10-21 来自 浙江
0好厉害
2024-09-19 来自 北京
0存档不了!!!【怒!!!你知道我弄了多久吗???】
2024-09-04 来自 江西
0建议多加一些商品。装备,药剂之类的东西。
2024-09-04 来自 江西
0催更
2024-09-03 来自 江西
0其他的还好,就是有点费手
2024-09-02 来自 江西
0牛逼
2024-09-02 来自 浙江
0zc
2024-08-17 来自 上海
0666
2024-08-17 来自 浙江
0
有帮助,赞一个