纯自制C++游戏--天空岛 1.4.4
2025-04-26 15:46:53
发布于:上海
更新日志:
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 增加一只姜强度
1.3.7 删除剧情模式,优化体验,减少一只姜强度
1.3.8 优化代码
1.3.9 增加切换角色的功能
1.4.0 优化代码,加入角色Macw07,润色语句,更改存档方式
1.4.1 修复Bug
1.4.2 修复存档Bug
1.4.3 格式化,修复Macw07大招不加金币的Bug
1.4.4 删减代码,节省内存
点赞催更
游玩方法:将其复制到Dev-C++
里运行 (也可以使用其他C++编译器,如Visual Studio Code
)
#include<iostream>
#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[5]={"花似雪","N","N"},gname,shop[10]={"血量(10血)","血量(20血)","血量(30血)","血量(50血)","缩短CD 1秒","缩短CD 2秒","伤害(1血)","伤害(2血)","角色(一只姜)"};
bool isKeyPressed(int key) {
return (GetAsyncKeyState(key)&0x8000)!=0;
}
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;
}
break;
}
}
cout<<"请按下 3 键使用二技能\n";
while(true){
if (isKeyPressed('3')) {
if(player==0){
cout<<"我方使用二技能 暴力破解,造成了敌方"<<12+kill_<<"点伤害"<<endl;
}
break;
}
}
cout<<"请按下 4 键使用大招\n";
while(true){
if (isKeyPressed('4')) {
if(player==0){
cout<<"我方使用大招 水来土掩,造成了敌方"<<20+kill_<<"点伤害"<<endl;
}
break;
}
}
system("pause");
}
system("cls");
while(true){
cout<<"请选择出战角色:\n1.花似雪 2.一只姜 3.Macw07\n";
cin>>choice;
if(choice==1){
gname="花似雪";
player=0;
break;
}
else if(choice==2&&name[1]=="一只姜"){
gname="一只姜";
player=1;
break;
}
else if(choice==3&&name[2]=="Macw07"){
gname="Macw07";
player=2;
break;
}
cout<<"你没有这个角色。\n";
}
cout<<"你的角色为:"<<gname<<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;
}
else if(player==2){
cout<<"我方使用一技能 AC狗饲养员,使自己回6滴血"<<endl;
x+=6;
}
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;
}
else if(player==2){
cout<<"我方使用二技能 AC帖,对敌方造成"<<16+kill_<<"精神伤害"<<endl;
ox-=16+kill_;
}
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;
}
else if(player==2){
cout<<"我方使用二技能 来AC,对敌方造成"<<8+kill_<<"实体伤害,自己回16滴血,捡到对方10个金币"<<endl;
x+=16;
ox-=8+kill_;
coin+=10;
}
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);
}
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.角色(Macw07) 1000金币\n11.返回主页面\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[1]="一只姜";
player=1;
buy[buy_time]=8;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==10){
if(coin>=1000){
coin-=1000;
name[2]="Macw07";
player=2;
buy[buy_time]=9;
buy_time++;
shop_mode(0);
}
else{
shop_mode(1);
}
}
else if(choice==11){
return;
}
else{
shop_mode(2);
}
}
void load_mode(){
ofstream file("存档.code");
if (file.is_open()) {
file <<name[1]<<" "<<name[2]<<" "<<coin<<" "<<x<<" "<<cd_<<" "<<buy_time<<" "<<kill_;
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 >>name[1]>>name[2]>>coin>>x>>cd_>>buy_time>>kill_;
for(int i=0;i<buy_time;i++){
file>>buy[i];
}
file.close();
}
}
void home(){
int n;
cout<<"欢迎游玩 天空岛\n1.休闲模式 2.商店 3.退出 4.购买记录 5.存档 6.读档\n请输入选择:";
cin>>n;
switch(n){
case 1:
play_mode();
break;
case 2:
shop_mode(0);
break;
case 3:
out_mode();
break;
case 4:
look_mode();
break;
case 5:
load_mode();
break;
case 6:
read_load_mode();
break;
default:
system("cls");
cout<<"请重新输入。\n";
home();
}
}
int main(){
while(true){
system("cls");
home();
}
}
都看到这了,还不点个赞!
全部评论 17
游戏最好发布到灌水区。学术板块一般用于交流学术问题。谢谢配合!
2024-09-03 来自 加拿大
3f********k
2024-08-29 来自 浙江
1昨天 来自 四川
0过招太快了,能慢一点看清楚点吗?
4天前 来自 广东
0能加入我的团队吗?
https://www.acgo.cn/application/1870763133040070656
谢谢!2025-04-07 来自 浙江
06662024-11-20 来自 四川
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
有帮助,赞一个