1、C++游戏编程中的问题
额...是需要一个自己编的头文件的...当时那一大段代码也是我在网上找的...so...那个头文件我目前是找不到了,过了太久了...
如果你只是想要一个背单词的程序的话,我后来自己有写一个,发在这里给你看下好了。
#include <iostream>
#include <fstream>
#include <ctime>
#include <string>
using namespace std;
void Input()
{
ofstream outfile("en.dat",ios::binary);
if(!outfile)
{
cerr<<"创建文件错误!"<<endl;
exit(1);
}
string word;
for(int i=0;i<100;i++)
{
cin>>word;
outfile.write(word.c_str(),30);
}
outfile.close();
}
class Word
{
private:
string str1;
string str2;
int m;
int b;
static int num;
static float sum;
public:
Word()
{
srand(time(0));
ifstream infile("en.dat",ios::binary);
if(!infile)
{
cerr<<"打开文件错误!"<<endl;
exit(1);
}
int n=rand()%19;
str1.reserve(30);
str2.reserve(30);
infile.seekg((2*n)*30,ios::beg);
infile.read((char *)str1.c_str(),30);
infile.seekg((2*n+1)*30,ios::beg);
infile.read((char *)str2.c_str(),30);
infile.close();
m=length();
b=space_num();
}
int length();
void display_word();
int space_num();
int space_position(int sum);
void judge();
void xuanze(char m,int n);
void display_chinese() {cout<<str2<<endl;;}
static float average() {return (sum/(num*5)); }
static int score() { return sum; }
friend void play();
};
float Word::sum=0;
int Word::num=0;
void Word::xuanze(char m,int n)
{
int f=0;
char ch[10];
for(int i=0;i<3;i++)
{
if(n==1)
{
cout<<"请输入第一个空格的字母"<<endl;
cin>>ch[i];
}
if(n==2)
{
cout<<"请输入第二个空格的字母"<<endl;
cin>>ch[i];
}
if(n==3)
{
cout<<"请输入第三个空格的字母"<<endl;
cin>>ch[i];
}
if(m==ch[i]) {cout<<"正确!"<<endl;sum=sum+5;break;}
else {cout<<"不好意思,你答错了!"<<endl;f++;}
}
if(f==3)
{
char a[4];
int c=m;
a[1]=rand()%26+97;
a[2]=rand()%26+97;
a[3]=rand()%26+97;
while(a[1]==a[2]||a[2]==a[3]||a[1]==a[3]||a[1]==c||a[2]==c||a[3]==c)
{
a[1]=rand()%26+97;
a[2]=rand()%26+97;
a[3]=rand()%26+97;
}
cout<<"请在四个选择项中选择一个字母"<<endl;
cout<<a[1]<<" "<<m<<" "<<a[2]<<" "<<a[3]<<endl;
cout<<"请选择正确的字母:";
cin>>ch[3];
if(ch[3]==m) {cout<<"你终于对了,继续啊!"<<endl; sum=sum+5;}
else cout<<"哈哈,你又答错了,下次加油哦"<<endl;
}
}
int Word::length()
{
int sum=1;
char *p=&str1[0];
char ch;
for(int i=1;i<30;i++)
{
ch=*(p+i);
if(ch!='\0') sum=sum+1;
else break;
}
return sum;
}
int Word::space_num()
{
srand(time(0));
int n;
if(m>=2&&m<=4) n=1;
if(m>=5&&m<=7) n=2;
if(m>=8&&m<11) n=3;
if(m>=11&&m<30) n=rand()%3+1;
return n;
}
int Word::space_position(int sum)
{
srand(time(0));
if(b==1)
{
int n1;
for(int i=1;i<1000;i++)
{
n1=rand()%(m-1)+1;
if(n1==0||n1==(m-1)) continue;
else break;
}
if(sum==1) return n1;
else return 0;
}
if(b==2)
{
int n2,n3;
n2=rand()%(m-1)+1;
n3=rand()%(m-1)+1;
while(n2==0||n2==(m-1)||n3==0||n3==(m-1)||n2==(n3+1)||n3==(n2+1)||n2==n3)
{
n2=rand()%(m-1)+1;
n3=rand()%(m-1)+1;
}
if(sum==1) return n2;
if(sum==2) return n3;
else return 0;
}
if(b==3)
{
int n4,n5,n6;
n4=rand()%(m-1)+1;
n5=rand()%(m-1)+1;
n6=rand()%(m-1)+1;
while(n4==0||n4==(m-1)||n5==0||n5==(m-1)||n6==0||n6==(m-1)||n4==(n5+1)||n5==(n4+1)||n4==(n6+1)||n6==(n4+1)||n5==(n6+1)||n6==(n5+1)||n4==n5||n5==n6||n4==n6||n4==n5==n6)
{
n4=rand()%(m-1)+1;
n5=rand()%(m-1)+1;
n6=rand()%(m-1)+1;
}
if(sum==1) return n4;
if(sum==2) return n5;
if(sum==3) return n6;
else return 0;
}
else return 0;
}
void Word::display_word()
{
char *p=&str1[0];
if(b==1)
{
int n1=space_position(1);
for(int i=0;i<n1;i++)
cout<<*(p+i);
cout<<" ";
for(i=(n1+1);i<m;i++)
cout<<*(p+i);
cout<<endl;
}
if(b==2)
{
int n2=space_position(1);
int n3=space_position(2);
int t;
if(n2>n3) {t=n2;n2=n3;n3=t;}
for(int i=0;i<n2;i++)
cout<<*(p+i);
cout<<" ";
for(i=(n2+1);i<n3;i++)
cout<<*(p+i);
cout<<" ";
for(i=(n3+1);i<m;i++)
cout<<*(p+i);
cout<<endl;
}
if(b==3)
{
int n4=space_position(1);
int n5=space_position(2);
int n6=space_position(3);
int t;
if(n4>n5) {t=n4;n4=n5;n5=t;}
if(n4>n6) {t=n4;n4=n6;n6=t;}
if(n5>n6) {t=n5;n5=n6;n6=t;}
for(int i=0;i<n4;i++)
cout<<*(p+i);
cout<<" ";
for(i=(n4+1);i<n5;i++)
cout<<*(p+i);
cout<<" ";
for(i=(n5+1);i<n6;i++)
cout<<*(p+i);
cout<<" ";
for(i=(n6+1);i<m;i++)
cout<<*(p+i);
cout<<endl;
}
}
void Word::judge()
{
char *p=&str1[0];
if(b==1)
{
num=num+1;
int n1=space_position(1);
xuanze(*(p+n1),1);
}
if(b==2)
{
num=num+2;
int n2=space_position(1);
int n3=space_position(2);
int t;
if(n2>n3) {t=n2;n2=n3;n3=t;}
char m2=*(p+n2);
char m3=*(p+n3);
xuanze(m2,1);
xuanze(m3,2);
}
if(b==3)
{
num=num+3;
int n4=space_position(1);
int n5=space_position(2);
int n6=space_position(3);
int t;
if(n4>n5) {t=n4;n4=n5;n5=t;}
if(n4>n6) {t=n4;n4=n6;n6=t;}
if(n5>n6) {t=n5;n5=n6;n6=t;}
char m4=*(p+n4);
char m5=*(p+n5);
char m6=*(p+n6);
xuanze(m4,1);
xuanze(m5,2);
xuanze(m6,3);
}
}
void play()
{
char c='0';
while(c!='q')
{ Word t;
int n=t.length();
while(n>7)
{
Word t;
n=t.length();
}
cout<<endl;
cout <<"-----------------------------------------"<<endl;
cout<<" "<<"2: 开始单词的背诵记忆"<<endl;
cout<<" "<<"4: 显示 中 文 提 示"<<endl;
cout<<" "<<"5: 查 询 成 绩"<<endl;
cout<<" "<<"q: 保存 并 退出 游 戏"<<endl;
cout <<"-----------------------------------------"<<endl;
cout<<" 请选择操作序号: ";
cin>>c;
cout<<endl;
switch(c)
{
case '2':
t.display_word();
t.judge();
break;
case '4':
cout<<"该单词的中文为:";
t.display_chinese();
t.display_word();
t.judge();
break;
case '5':
cout<<"你现在的分数为:";
cout<<Word::score()<<endl;
break;
case 'q':
ofstream outfile("f.dat",ios::binary);
if(!outfile)
{
cerr<<"创建文件错误!"<<endl;
exit(1);
}
float sco=Word::average();
outfile.write((char *) & sco,sizeof(sco));
outfile.close();
cout<<"你的正确率为:";
cout<<Word::average()<<endl;
break;
}
}
}
class Game
{private:
string wod;
char ch;
public:
Game(string X,char Y):wod(X),ch(Y){}
Game(){}
int choice_game();
friend void display_game();
};
int Game::choice_game()
{
cout<<endl;
cout<<"请输入1或q "<<endl;
l:cin>>ch;
switch(ch)
{
case'1':cout<<"++++++在游戏过程中,你可以按‘4’键寻求帮助,电脑会自动记录成绩+++++++++"<<endl;
cout <<"------------------------------华丽的分割线------------------------------"<<endl;
cout <<"--------------------------Game-----------begining-----------------------"<<endl;
cout <<"------------------------------华丽的分割线------------------------------"<<endl;
play();
break;
case'q':cout<<"你选择了退出,请记住帐号密码便于下次登录"<<endl;
cout <<" .....单........词......"<<endl;
cout <<" ....单..单.....词.词....."<<endl;
cout <<" .....单..单....词..词...."<<endl;
cout <<" ......单..单..词.词.词...."<<endl;
cout <<" .....单......... 词.... "<<endl;
cout <<" ...单.............词..."<<endl;
cout <<" ..单...............词.."<<endl;
cout <<" .单.................词. "<<endl;
cout <<" 单...................词 "<<endl;
cout <<" 单...................词 "<<endl;
cout <<" 单.....∩.......∩.....词 "<<endl;
cout <<" 单. ..................词"<<endl;
cout <<" 单. ...◎....U....◎....词 "<<endl;
cout <<" .单.................词."<<endl;
cout <<" ..单单.............词词.."<<endl;
cout <<" ....单.单.单.哈.词.词.词... "<<endl;
break;
default:cout<<"输入有误,请重新输入!"<<endl;goto l;break;
}
return 0;
}
void display_game()
{
cout<<" ---------------------------- "<<endl;
cout<<"============|Welcome to The words house|=============="<<endl;
cout<<" ---------------------------- "<<endl;
cout<<endl;
cout<<"=============== 按'q'键结束游戏 ==================="<<endl;
cout<<"=============== 按'1'键开始游戏 ==================="<<endl;
cout<<endl;
Game t("love",'a');
t.choice_game();
}
class User:public Game
{
private:
string zhuce_num;
string zhuce_sec;
string denglu_num;
string denglu_sec;
char zhuce;
public:
User(string x0,string y0):zhuce_num(x0),zhuce_sec(y0){}
User(string x,string y,char z):zhuce_num(x),zhuce_sec(y),zhuce(z){}
User(){zhuce_num="ab";zhuce_sec="123";}
void user_display();
int zhu_ce();
int deng_lu();
string getX0(){return zhuce_num;}
string getY0(){return zhuce_sec;}
string getX(){return denglu_num;}
string getY(){return denglu_sec;}
};
void User::user_display()
{
cout<<"===请问您需要注册属于自己的账号跟密码吗,==="<<endl;
cout<<"===以便于您下次玩时能够看到您先前玩的情况==="<<endl;
cout<<"=========如果你已经注册请按m直接登录========="<<endl;
cout<<"==============Yes or NO or M================="<<endl;
}
int User::zhu_ce()
{
user_display();
l:cin>>zhuce;
if(zhuce=='m'||zhuce=='M')
{
deng_lu();
}
else if(zhuce=='y'||zhuce=='Y')
{
ofstream outfile("user.dat",ios::binary|ios::app);
if(!outfile)
{
cerr<<"Open error !"<<endl;
exit(1);
}
cout<<"请输入您的账号跟密码:"<<endl;
string zhuce_num;
string zhuce_sec;
cin>>zhuce_num;
cin>>zhuce_sec;
outfile.write(zhuce_num.c_str(),16);
outfile.write(zhuce_sec.c_str(),16);
outfile.close();
cout<<"=====注册成功,你现在可以登录进入游戏了!===="<<endl;
deng_lu();
return 0;
}
else
{
cout<<"===帐号或密码有错,请重新输入!==="<<endl;
goto l;
}
return 0;
}
int User::deng_lu()
{
int m=50;
int m1=0;
cout<<"======== 你有3次登陆机会,连续3次都没登陆成功,你将无法再登陆!========="<<endl;
while(m1<3)
{
cout<<"=======请输入你的登录账号:"<<endl;
cin>>denglu_num;
cout<<" =======请输入你的帐号密码:"<<endl;
cin>>denglu_sec;
ifstream infile("user.dat",ios::binary);
if(!infile)
{
cerr<<"打开用户文件失败!"<<endl;
exit(1);
}
string str1, str2;
string str3,str4;
int n1=0;
str1.reserve(14);
str2.reserve(7);
for(int i=0;i<m;i=i+2)
{
infile.seekg(i*16,ios::beg);
infile.read((char *)str1.c_str(),16);
str3=(char*)(str1.c_str());
infile.seekg((i+1)*16,ios::beg);
infile.read((char *)str2.c_str(),16);
str4=(char*)(str2.c_str());
if(str3==denglu_num&&str4==denglu_sec)
{
cout<<"=========恭喜你成功登陆========="<<endl;
display_game();
return 0;
}
else
{
n1=0;
continue;
}
}
if(n1==0)
{
m1++;
cout<<"对不起!账号或密码有错,请重新输入!!"<<endl;
}
infile.close();
}
cout<<endl;
if(m1==3)cout<<"=========对不起,请找管理员或另注册一个帐号=========="<<endl;
return 0;
}
class Manager:public User
{
private:
char c;
public:
Manager(char ch){c=ch;}
friend void display();
void person_judge();
};
void display()
{
cout <<" ____ii~~~"<<endl;
cout <<"丿#####八 __" <<endl;
cout <<"|_[]__|田|__| The words house-单词屋欢迎您"<<endl;
cout<<"=============== 进入单词屋前请选择你的身份 ==============="<<endl;
cout<<"=============== 1: 管理员 ==============="<<endl;
cout<<"=============== 2: 玩家 ==============="<<endl;
cout<<"=============== 请选择用户类型: ==============="<<endl;
Manager ma('a');
ma.person_judge();
}
void Manager::person_judge()
{
l:cin>>c;
switch(c)
{
case'1':
char a;
cout<<"=============== 请选择你需要进行的操作 ==============="<<endl;
cout<<"=============== 3: 添加单词 ==============="<<endl;
cout<<"=============== 4: 修改单词 ==============="<<endl;
cout<<"=============== 5: 删除单词 ==============="<<endl;
cout<<endl;
l1:cin>>a;
if(a=='3')
{
cout<<"=============== 请输入你需要添加的单词的个数: ==============="<<endl;
int num;
cin>>num;
ofstream outfile("en.dat",ios::binary|ios::app);
if(!outfile)
{
cerr<<"创建文件错误!"<<endl;
exit(1);
}
cout<<"============== 请输入你需要添加的单词 ==============="<<endl;
string word;
cout<<"先输入单词,在输入中文"<<endl;
for(int i=0;i<(2*num);i++)
{
cin>>word;
outfile.write(word.c_str(),30);
}
cout<<"========添加单词成功!=========="<<endl;
cout<<endl;
outfile.close();
display();
}
else if(a=='4')
{
cout<<"=======请输入你需要修改的单词的位置=========="<<endl;
cout<<"n为偶数"<<endl;
int n;
cin>>n;
cout<<"========请输入你要修改成的单词:=========="<<endl;
string newstr;
cin>>newstr;
cout<<"========请输入你要修改成的单词的中文意思=========="<<endl;
string newch;
cin>>newch;
fstream modfile("en.dat",ios::in|ios::out|ios::ate|ios::binary);
if(!modfile)
{
cerr<<"创建文件错误!"<<endl;
exit(1);
}
newch.reserve(30);
newstr.reserve(30);
modfile.seekg(n*30,ios::beg);
modfile.write(newstr.c_str(),30);
modfile.seekg((n+1)*30,ios::beg);
modfile.write(newch.c_str(),30);
cout<<endl<<"第"<<(n/2+1)<<"个单词被修改为:"<<newstr<<endl;
cout<<endl<<"第"<<(n/2+1)<<"个单词中文被修改为:"<<newch<<endl;
modfile.close();
display();
}
else if(a=='5')
{
cout<<"========请输入你需要删除的单词的位置=========="<<endl;
int n1;
cin>>n1;
string delete_word;
fstream modfile("en.dat",ios::in|ios::out|ios::ate|ios::binary);
if(!modfile)
{
cerr<<"创建文件错误!"<<endl;
exit(1);
}
delete_word.reserve(NULL);
modfile.seekg((n1-1)*30,ios::beg);
modfile.write((char * )&delete_word,sizeof(delete_word));
cout<<"======= 删除成功! ======="<<endl;
modfile.close();
display();
}
else
{
cout<<"=======输入有错,请重新输入! ========"<<endl;
goto l1;
}
break;
case '2':
zhu_ce();
break;
default:cout<<"输入有误,请重新输入!"<<endl;goto l;break;
}
}
int main()
{
User us("a","b");
display();
return 0;
}
2、求最终幻想GBA版1和2的攻略
你好,我来解答一下:
GBA《最终幻想1·2》完全攻略
1.序章 消逝的和平
在另一个遥远的世界,长久以来维持的和平如今宣告结束了。帕拉美奇亚的皇帝从魔界召唤出怪物,妄图征服世界。面对突如其来的强敌,反抗军在菲因城奋起抵抗。然而在帝国军队猛烈的进攻下,菲因城也落陷了。反抗军撤离到边境的小镇阿鲁迪亚继续抵抗。住在菲因的4个年轻人,在帝国军队发动的进攻中失去了他们的双亲。为了逃避帝国军队的血腥屠杀,他们结伴而行,一路逃亡…………
帕拉美奇亚的皇帝从魔界召唤出怪物,帝国军队大肆侵略。
帝国军队猛烈的进攻无人能挡。反抗军苦战中。
2.重生 加入反抗军
逃亡中的主角们最终被帝国军队追上,战斗中4人先后被击败,倒在血泊中失去了知觉……。反抗军的希尔达公主(ヒルダ)在向边境小镇阿鲁迪亚(アルテア)撤退的过程中发现了满身鲜血的几人,把他们救了回来。公主和白魔导士敏武(ミンウ)用魔法阵救了几人的命。主角醒来以后碰到了另两个同伴,女主角告诉他反抗军没能救回她的哥哥,三人都很难过,两位同伴鼓励了她一番叫她不要放弃希望。一行人来到会议室,向公主表达了加入了抵抗军抗击帝国军队的决心。公主最终被3人的决心打动,让他们加入了反抗军,并告诉了他们反抗军接头的暗号——野玫瑰(のばら)。与公主和敏武交谈后得到第一个任务—回菲因城(フイン)探探虚实。
公主和敏武救了主角。女主角的哥哥没能获救,三人都很难过,但还是互相鼓励了一番。
加入反抗军,并记录下联络暗号——野玫瑰(のばら)。主角探望在战斗中受了重伤的菲因国王。
在村子里遇到神偷波尔(ポ-ル)。和卡修恩城的王子哥顿(ゴ-ドン)交谈了解情况。
3.重返菲因 消逝的爱
先在阿鲁迪亚周围提升一下自己的实力,赚点钱购置一些装备,然后主角一行人就向菲因城出发了。菲因城在阿鲁迪亚左上不远的地方,途中还要经过一个小村庄卡迪亚村(ガテア),菲因就在卡迪亚村的对岸。到达菲因后发现这里已经完全被帝国军队占领了。在酒吧里用暗号野玫瑰(のばら)与老板交谈,他会告诉主角他也是反抗军,并为主角打开密道。在密室里主角们见到了卡修恩的王子斯科特(スコット),他在菲因保卫战中受了重伤。他告诉主角们波肯伯爵(ボ-ゲン)出卖了反抗军,所以菲因才会失守。斯科特王子还表达了对希尔达公主的思念和爱,但他不要主角把这些话告诉公主,并把与公主的订婚戒指交给主角,希望公主以后不要再想他,好好的生活下去。说完这话后重伤不治的斯科特王子就牺牲了………
在阿鲁迪亚一定要记得购买回复魔法书(让女主角学习)。卡迪亚村(菲因就在对岸)
菲因城里全是帝国士兵(不要与敌人交谈,会触发战斗)。从这里绕着边走可以去酒吧。
使用反抗军联络暗号野玫瑰(のばら)交谈,老板身后就是密道。重伤不治的斯科特王子牺牲了。
4.出发 找寻传说中的魔法金属米斯里鲁
主角一行人离开菲因回到了阿鲁迪亚(得到戒指后按Select+B可以看大地图)。在会议室,主角把斯科特王子牺牲的事情告诉了公主。大家都很难过。随后公主告诉主角,要他们去找米斯里鲁(ミスリル)金属,因为这种金属打造的武器比一般的武器威力要大,菲因失守反抗军就是输在了武器装备上。获得了关键词米斯里鲁(ミスリル)之后与公主身边的敏武交谈,他会加入队伍,并送给主角独木舟(现在可以在湖泊上自由航行了)。敏武加入以后再与公主交谈,她会告诉你帝国军队正在把飞空艇(ひくうせん)扩建为攻击力巨大的战争武器大战舰(だいせんかん),另外萨拉曼多镇(サラマンド)的约瑟夫(ヨ-ゼフ)大概知道米斯里鲁的位置。主角一行人离开阿鲁迪亚,往右上方走,穿过一个湖泊来到帕鲁姆镇(パルム)。在帕鲁姆镇花32G乘船去波夫特(ポフト)。在波夫特的酒店中遇到施德(シド),他用自己私有的飞空艇来做生意。与他旁边的人交谈,花200G就可以乘坐飞空艇到萨拉曼多镇(サラマンド)了。
把斯科特王子给的戒指拿给公主看会触发剧情。记录关键词魔法金属米斯里鲁(ミスリル)。
与公主身旁的敏武对话,敏武加入队伍并把独木舟送给了主角。现在可以自由穿越湖泊了!
穿越湖泊向东来到帕鲁姆镇(パルム),与这个女人交谈花32G坐船去波夫特(ポフト)。要穿过海洋才能到达。
在波夫特(ポフト)的酒吧碰到喝酒的施德,跟他交谈之后向他身边的仆人交200G就可以坐飞空艇了,它会把你载到萨拉曼多镇(サラマンド)。飞空艇出发啦,真爽!
5.萨拉曼多—没有男人的小镇
主角一行人来到了萨拉曼多镇,这里有强力的武器、防具和新的魔法出售,先把装备换换吧。在镇子里转转发现镇中几乎没有一个男人,打听后才知道镇子里的男人们都被帝国军队强拉到塞美多瀑布洞窟(セミテの泷の洞窟)去了。主角一行人由此推断米斯里鲁金属矿就在塞美多瀑布洞窟里。在镇子右上角的屋子里主角发现了约瑟夫(ヨ-ゼフ)。约瑟夫并不相信主角一行人的反抗军身份,除非主角帮他救出村子里被抓去做苦力的人。于是主角便向塞美多瀑布洞窟出发了。出了萨拉马多镇一直往左走,不一会就看见一条小河,顺着小河向右前进一会就来到塞美多瀑布洞窟了。在洞窟3层救出了萨拉马多镇的镇民,其中还有约瑟夫的女儿和神偷波尔。波尔告诉主角米斯里鲁金属就在洞窟更深的地方。继续向下走,终于在洞窟5层拿到了米斯里鲁金属!再次回到约瑟夫家,约瑟夫感谢主角帮他救出了村民和他女儿,并透露暗黑骑士成为指挥官以后,大战舰的制造速度提高了很多,已经快要完工了!
到了萨拉马多先换一下装备(钱不够就在外面转转,这里的敌人不强,赚钱的同时顺便提升一下自己的实力)。在镇子里转了转,发现这里竟然没有一个男人,交谈中得知男人全都被帝国军队抓去做苦力了。
在镇子右上角的房间里找到约瑟夫,用关键词ミスリル和他交谈可以触发剧情,他要你去救人。离开镇子一直往左走,到这里就下水,然后往右一直顺流而下。
从这里进去就是瀑布洞窟了。在洞窟3F救出一干人等。
洞窟5F的这个宝箱里可以拿瞬移(デレポ,可以脱离迷宫)魔法书,但是宝箱里有个怪物(它害怕冰魔法),会强制战斗。在5F的另一个房间里将遭遇FF2里的第一场BOSS战。
战胜BOSS,在他身后的宝箱里得到魔法金属米斯里鲁!回约瑟夫那里,他会告诉你一些重要情报。
6.成功打造米斯里鲁装备 反抗军蓄势待发
拿到米斯里鲁(ミスリル)金属的主角们离开萨拉曼多镇,往东南方向走来到波夫特(ポフト),与酒吧外面的女人对话,花32G坐船回到帕鲁姆镇(パルム)。到达帕鲁姆镇后继续南下,目的地是反抗军的基地阿鲁迪亚(アルテア)。回到阿鲁迪亚后去武器店把米斯里鲁金属交给武器店里的老头,他会用你给的原料制作出米斯里鲁武器和防具。以后武器店就会多了一个伙计,专门出售强力的米斯里鲁武器和防具。从现在开始反抗军的士兵们就能使用米斯里鲁武器和帝国军队战斗了!
到波夫特后与这个女人交谈可以坐船回帕鲁姆镇。到帕鲁姆后继续往回走,回反抗军基地阿鲁迪亚。
回到阿鲁迪亚后把米斯里鲁(ミスリル)金属交给武器店里的这个老头。老头会帮反抗军打造武器,多出来的这个伙计就是专门出售米斯里鲁装备的。
使用米斯里鲁打造的武器和防具。赶紧买吧!
7.完美计划流产 破坏大战舰行动失败
完成武器打造之后,主角等人回会议室向公主复命。公主告诉他们,由于反抗军成功抢夺了米斯里鲁金属,已经引起帝国的注意,实力超强的暗黑骑士已经被紧急调回帕拉美奇亚,这样就有机会破坏大战舰了。公主还告诉主角反抗军已经有间谍秘密潜入了大战舰停泊的帕夫斯克(バフスク)军事基地,到时候里应外合,一定能破坏大战舰!主角一行立刻出发。先去帕鲁姆镇(パルム)坐船到波夫特(ポフト),然后花100G坐飞空艇就到帕夫斯克了。帕夫斯克里到处都是帝国士兵,与左下一个帝国士兵交谈,使用关键词野玫瑰(のばら)和大战舰交谈之后,他会告诉你他就是反抗军的内应,并把主角带到通往大战舰的下水道。眼看走到了下水道的尽头,没想到暗黑骑士竟然出现在出口处!“大战舰已经完工了!你们根本没有胜算!尽早向皇帝投降吧!”,说完之后,暗黑骑士头也不回的走掉了。波肯伯爵(ボ-ゲン)也乘机对主角们嘲笑一番,然后怪笑着离开了。主角一行人追了出去,无奈大战舰已经飞走了。重新返回下水道,在出口右边的房间里找到通行证(つうこうしょう
)后通过传送点离开。
用关键词大战舰与公主交谈会触发剧情,公主认为现在是破坏大战舰的好时机。在波夫特(ポフト)花100G可以乘坐飞空艇去帕夫斯克(バフスク)。
飞空艇把你送到帕夫斯克。使用关键词野玫瑰(のばら)和大战舰与地图左下的这个士兵交谈,他会告诉你他就是反抗军的内应,并把你带到下水道的入口。
在下水道的出口处暗黑骑士挡住了主角的去路。大战舰飞走了,主角一行人的行动失败!
回到下水道,在右边的房间里找到“通行证”(つうこうしょう )。通过这个传送点可以离开下水道。
8.帝国反击战 残存的希望
作为对反抗军抢夺米斯里鲁金属和企图破坏大战舰的惩罚,帝国军队展开了大规模的空袭行动。主角到波夫特找到施德,询问有关飞空艇和大战舰弱点的事。这里刚刚遭到帝国军队的空袭,已经是一片废墟了。施德告诉主角大战舰和飞空艇都是使用太阳火焰(太阳の炎)作为动力,但是太阳火焰并不稳定,稍微多加一点就会爆炸。离开波夫特,主角回到了阿鲁迪亚。除了波夫特以外,帕鲁姆和阿鲁迪亚也同时遭到了帝国军队的大规模空袭。这几个给予反抗军支持的城市现在都已经是一片废墟了,空袭同时造成了大量反抗军战士和无辜平民的伤亡。回到会议室,白魔导士敏武表示要留下来照顾受伤的人和病重的菲因国王,于是敏武离开了队伍。使用关键词太阳火焰(太阳の炎)与公主交谈,公主告诉主角太阳火焰是卡修恩城(カシュオ-ン)的标志之一,施德的飞空艇可以送他们去卡修恩城,但是怎样取得火焰却不清楚。去国王的房间与敏武交谈,敏武告之只有用超级火把(エギルのたいまつ)才能取得太阳火焰。与国王对话,国王告诉大家斯科特(斯科特就是游戏刚开始在菲因城牺牲的那位王子)在战争爆发以前,为了保护太阳火焰,已经把卡修恩城封印了,谁也进不去,只有使用女神铃(女神のベル)才能破解封印。敏武告诉主角,斯科特已经死了,但公主曾是他的未婚妻,因此公主或许知道女神铃的下落…………。回会议室与公主交谈,公主告诉主角她的确从斯科特那里听说过此事,女神铃就藏在雪原洞穴的深处,而雪原洞穴就在约瑟夫家的背后,去约瑟夫那里问问他吧。带着击败大战舰的一线希望,主角们离开了废墟中的城市,朝萨拉曼多镇(サラマンド)出发了。
主角离开帕夫斯克(バフスク)来到波夫特(ポフト),这里已经是一片废墟。在酒吧里与与施德交谈获得关键词太阳火焰。
帕鲁姆凄凉的惨景,房屋被炸毁,地上布满了弹坑。阿鲁迪亚也遭到了帝国军队的空袭。
敏武要照顾伤者离开了队伍。在国王的房间与敏武交谈得知关于超级火把(エギルのたいまつ)的事。
用太阳火焰与国王交谈获得关键词女神铃(女神のベル)。回会议室与公主交谈,公主要主角去萨拉曼多镇找约瑟夫。
9.雪上船
主角一行人由帕鲁姆(パルム)乘船到达波夫特(ポフト),在波夫特花200G乘坐飞空艇就到萨拉曼多镇(サラマンド)了。去约瑟夫家拜访他,使用关键词女神铃(女神のベル)与他交谈,他会告诉你女神铃就藏在雪原洞窟(せつけんのどうくつ),但是要去雪原洞窟必须先找到雪上船(せつじょうせん),否则是无法在茫茫雪原上行动的,而雪上船就藏在以前去过的塞美多瀑布洞窟(セミテのたきのどうくつ)里一个有兰色石头的地方。说完之后约瑟夫会加入了队伍。来到塞美多瀑布洞窟,在1F找到有兰色石头的地方,调查右上方的墙壁会发现一条密道!从密道进去可以获得雪上船,以后就可以在雪原上自由行动了!
在帕鲁姆(パルム)乘船去波夫特(ポフト)。在波夫特花200G坐飞空艇去萨拉曼多。
用关键词女神铃(女神のベル)与约瑟夫交谈,他会告诉你雪上船(せつじょうせん)的事情。说完之后约瑟夫加入队伍。
在瀑布洞窟1F调查这里的墙壁会发现密道。从密道进去以后获得雪上船(せつじょうせん)!
10.约瑟夫最后的决定 永别了朋友!
获得雪上船后,从地图的左上角一个狭窄的通道进入雪原,一直向右前进就可以到达雪原洞窟(せつけんのどうくつ)。来到洞窟5F的一个房间里,发现那里有许多大海狸(ジャイアントビ-バ-)。与左上方的海狸交谈,它会告诉你女神铃被藏在房间右边的墙里。在右方的墙壁里发现密道,进去之后顺利取得女神铃(这里有BOSS战)。在众人经过来时那条长阶梯准备离开的时候,波肯伯爵(ボ-ゲン)出现并挡住了去路(BOSS战)。打倒这个出卖反抗军的叛徒后,丧心病狂的波肯伯爵在死前发动了机关,一个巨大的圆石顺着阶梯滚了下来!主角一行人赶紧往下跑去,但那石头却越滚越快、越来越近,眼看就要追上大家了!在这千钧一发之际,约瑟夫挺身而出,用自己的身体顶住了那巨大的圆石。“快走!不要管我!替我照顾我的女儿......。快走!!!”。三人刚跑下楼梯,那圆型巨石就滚了下来,为了救大家的命,约瑟夫壮烈牺牲了…………。主角一行人怀着悲痛的心情回到萨拉马多镇,那个一直在约瑟夫家门外徘徊的爱慕着约瑟夫的红衣女子答应主角会好好照顾约瑟夫的女儿。把约瑟夫女儿的事情安排妥当之后,众人才离开了萨拉曼多镇…………
从这里进入大雪原。这里就是雪原洞窟(せつけんのどうくつ)。
在洞窟5F用关键词女神铃(女神のベル)与大海狸交谈,它告诉主角女神铃被藏在房间右边的墙里。这个地方有密道,可以直接走进去。
与守护女神铃的妖怪交战(BOSS战)。打倒BOSS后调查它身后的墙壁发现了女神铃!!
波肯伯爵挡住去路。与波肯伯爵交战(BOSS战)。
波肯伯爵临死前发动了机关。约瑟夫用自己的身体挡住巨石!
约瑟夫拯救了大家,他自己却献出了生命。主角一行人回到约瑟夫家里,红衣女子表示会好好照顾约瑟夫的女儿。
11.太阳火焰
离开萨拉曼多镇向南来到波夫特(ポフト),在波夫特乘船回帕鲁姆(パルム),到达帕鲁姆后继续向南回到反抗军的基地阿鲁迪亚(アルテア)。在会议室里主角把事情的经过告诉了公主,公主为约瑟夫的死感到非常难过。为了不让约瑟夫白白牺牲,主角决定立刻前往卡修恩城(カシュオ-ン)去取得太阳火焰。公主告诉主角,取得太阳火焰后她会安排施德用飞空艇接大家回来。主角一行人离开了阿鲁迪亚,在帕鲁姆乘船到波夫特,然后在波夫特花100G坐飞空艇来到帕夫斯克(バフスク),到帕夫斯克后步行南下就来到了群山环抱中的卡修恩城。入城就可以看到一楼大厅中央的太阳火焰了,但是没有超级火把(エギルのたいまつ)是无法取走太阳火焰的,而超级火把就在城中。用女神铃开启城门,刚进去就看到了哥顿。哥顿是卡修恩的王子,为了协助众人取得火把他加入了主角的队伍。城堡中有许多宝物,最关键的超级火把在4F,将守护火把的红色灵魂打倒之后就可以获得。回到一楼,使用超级火把顺利取得了太阳火焰!出城后,发现两艘飞空艇快速飞了过来,前面的是施德的飞空艇,后面追赶它竟是帝国军队的大战舰!大战舰正在不断攻击施德的飞空艇,看起来情况十分危急!
公主为约瑟夫的死感到十分难过。为了不让约瑟夫白白牺牲,一行人决定去卡修恩城(カシュオ-ン)去取得太阳火焰
在波夫特花100G去帕夫斯克。到帕夫斯克后继续向南出发。
群山环抱中的卡修恩城。一楼大厅中央的就是太阳火焰。
在这里要使用女神铃(めがみのベル)才能打开城门。哥顿加入队伍。
守护超级火把的红色灵魂(4F)。BOSS战,击倒它后在里面的宝箱中取得超级火把
使用超级火把(エギルのたいまつ)取得太阳火焰。出城以后目睹大战舰追击施德的飞空艇。
12.潜入作战 大战舰内部的激斗
在卡修恩城南边不远的森林中,有一处地方与周围明显不同,进去之后发现原来这里就是陆行鸟森林(这是陆行鸟首次在FF系列中登场)!主角一行人往北回到波夫特(ポフト),然后坐船去帕鲁姆(パルム),接着就回到了反抗军基地阿鲁迪亚(アルテア)。在阿鲁迪亚,众人得知了一个惊人的消息——施德的飞空艇已经被大战舰俘获,公主当时也在飞空艇上,因此公主也一起落入帝国手中了!继续打听情况,反抗军的情报显示大战舰目前正停靠在菲因(フイン)北边的军事基地进行补给。事不宜迟,主角立刻动身往北方基地赶去。在基地入门处有士兵盘查主角的身份,使用以前拿到的通行证(つうこうしょう)可以混进去。大战舰内部守卫森严,帝国精锐部队负责这里的防务工作。主角一行人小心翼翼的潜入大战舰内部,在2F发现关押公主和施德的牢房,奇怪的是这里竟然没有帝国士兵守卫……。打开牢门以后,公主说话和平时似乎有点不一样。和施德交谈,施德表示他先把公主带到飞空艇那里,叫主角赶紧找到大战舰的引擎,用太阳火焰引爆它,最后大家在飞空艇那里汇合。时间紧急,来不及细想两拨人便分头行动了。一边搜索,一边绕开一些士兵把守的关卡,终于到达了大战舰内部的核心部位——引擎室。主角把太阳火焰扔进了大战舰的引擎里,引擎立刻发生剧烈反应,整个大战舰都在不停的摇晃!这时候暗黑骑士赶来了,在确认引擎内的太阳火焰已经完全无法控制之后,冷冷的说了一句:“不要以为你们炸毁大战舰就赢了,对帝国来讲,这点损失根本微不足道”。女主角感觉这声音很熟悉,似乎想和暗黑骑士说点什么。男主角告诉她没有时间了,大战舰就要爆炸了!一行人立刻用最快的速度向和施德约好的地方跑去。终于赶到施德的飞空艇那里了,飞空艇刚一起飞,大战舰就发生了猛烈的爆炸。整个基地随大战舰的爆炸一起灰飞烟灭…………。虽然成功救出了公主,炸毁了大战舰可以暂时缓解帝国军队的进攻,但是众人想起暗黑骑士说的话,心里感觉到隐隐的不安…………。
卡修恩城南边不远的地方有陆行鸟森林。和陆行鸟对话就可以使用它了。骑在陆行鸟上能够高速移动,而且不会遇敌,非常讨人喜欢,骑着它回波夫特是最快捷的方法。
回到阿鲁迪亚,得知公主被帝国军抓住的消息。从菲因往北走可以到达大战舰停靠的北方基地。
这就是补给基地。位置如图所示。
对门口的士兵使用通行证(つうこうしょう)可以混进去。大战舰内守卫森严(不要与敌人交谈,会触发战斗)。
这堵墙其实是空的,直接走进去就可以拿睡眠剑(ねむりのけん),开宝箱时有强制战斗。在大战舰2F救出公主和施德,感觉公主有些异样。
在大战舰5F找到引擎室,对引擎使用太阳火焰(たいようのほのお)。暗黑骑士出现,女主角似乎想和他说些什么。
大战舰发生猛烈爆炸。施德的飞空艇成功脱出基地。
13.三个遗愿
回到阿鲁迪亚,从人们的口中得知病重的菲因王快要不行了。众人立刻赶到国王的房间。菲因王交代了三件事情。他首先任命哥顿为反抗军的指挥官,协助公主一起抗击帝国军队;然后吩咐敏武去解除究极之书的魔法封印;最后希望主角去一趟迪斯特城(ディスト),找寻幸存下来的龙骑士,因为反抗军非常需要龙骑士和飞龙的力量。“只要你们团结在一起,就一定能坚持到胜利的一天”,菲因王说完就去世了。回到会议室与哥顿交谈,获得两个关键词龙骑士和飞龙(ひりゅう)。主角离开阿鲁迪亚,在帕鲁姆(パルム)遇到一个女人,她说愿意用她的船送他们去迪斯特城。女主角感觉有些不妥,男主角却认为没什么不妥,而且还是免费乘坐,不坐可惜了……。海上,那女子亮出身份,她就是女海盗蕾拉,要主角留下钱财……。打败她之后,主角希望她能加入反抗军,蕾拉欣然同意。(蕾拉加入以后可以自由使用她的海船,现在你可以去世界上的任何地方了)
菲因王临终前交代了三个遗愿。和哥顿交谈获得两个关键词:龙骑士、飞龙。
在帕鲁姆与女海盗蕾拉对话。蕾拉的船停在这里。
在船上打败蕾拉的手下。蕾拉加入队伍(从现在开始可以操作海船去地图上的任何地方了)!!
14.龙骑士团的覆灭 最后的飞龙蛋
来到迪斯特城,发现这里只剩下母子两人。与他们交谈后才知道这女的丈夫是龙骑士团的一员,但是他已经在战斗中阵亡了。卑鄙的帝国军队先在水中偷偷的下毒,在毒死了绝大多数的飞龙之后,帝国军队立刻展开了疯狂的进攻。失去了飞龙的龙骑士根本不能发挥自己的实力,所以龙骑士团很快被帝国军队所歼灭了。现在整座迪斯特城就只剩下他们母子两人了。在他们身后的房间里有最后一条奄奄一息的飞龙,只有使用龙骑项链(ベンダント)才能和飞龙交谈。在迪斯特城北边的迪斯特洞窟2F,主角在一位龙骑士的骨骸中找到了龙骑项链。回来与飞龙交谈,它会把龙族的最后一枚飞龙蛋(ひりゅうのたまご)交给主角,并拜托主角把蛋放到飞龙洞窟的生命之泉里,这个蛋将是龙族最后的希望。再次来到迪斯特洞窟,在5F打败守在生命之泉前面的怪兽(BOSS战)后,把飞龙蛋放到了生命之泉里。回去城堡和母子告别,女子告诉主角最后的飞龙已经安静的离开了这个世界。
迪斯特城(ディスト)在地图右上方的海岛上,位置如图。在迪斯特城与女子对话获知只有使用龙骑项链(ベンダント)才能与飞龙交谈。
在迪斯特洞窟2F得到龙骑项链(ベンダント)。回到飞龙的房间用关键词(飞龙)和它交谈,得到飞龙蛋。
在迪斯特洞窟5F找到生命之泉。与守卫的BOSS交战。
获胜后把飞龙蛋(ひりゅうのたまご)放进生命之泉。回城里和母子告别。
15.真假公主
使用蕾拉的海船很容易就回到了阿鲁迪亚(アルテア)。众人一回来就听说公主现在变得越来越奇怪了,跟以前完全不一样。去会议室和哥顿交谈,哥顿告诉主角他现在完全没办法和公主沟通,希望主角去看一看公主。来到公主的房间,公主表示要和主角单独谈一谈。其他人离开后,公主竟然往床上一躺,温柔的说“来吧,还等什么呢?到我身边来……”。主角似乎被一股奇怪的力量拉到床边,突然间美丽的希尔达公主变成了一个蛇身人面的怪物,欲加害主角!这时候刚才离开的几位同伴及时冲了进来,四人一起制服了这个妖怪。假公主打倒了,那真公主在哪里呢?这时候一个反抗军士兵进来报告说,帕拉美奇亚帝国的斗技场(とうぎじょう)正在举行比武大会,而奖品就是希尔达公主!哥顿救人心切加入队伍,蕾拉则表示自己愿意在这里留守。一行人便急急忙忙的向斗技场出发了!
与哥顿交谈,他希望主角去看一看公主。来到公主的房间,公主要求和主角单独谈话。
原来公主是妖怪假扮的!BOSS战!
反抗军士兵报告说情报显示公主在帝国斗技场。哥顿加入队伍。
16.皇帝的圈套
帝国斗技场在阿鲁迪亚的海对岸,向右横度海洋再穿过一片沙漠就到了。进入斗技场,里面空无一人,往前走了几步发现帝国皇帝正静静的坐在王座上,身边一个士兵也没有!众人立刻冲了上去,却在皇帝面前被机关拦住了。“既然来了,就表演一下吧。如果你们赢了比赛,就把公主还给你们。”皇帝冷冷的说。这时候圆形角斗场另一边的门打开了,出来的是恐怖的怪兽!经过一番战斗,主角打败了怪兽。“不错,很精彩!你们上来领赏好了!”这可是打倒皇帝的好机会啊!走到皇帝面前,皇帝说他早就知道主角一行人是反抗军战士。说完皇帝就消失了,紧接着暗黑骑士和大队的帝国士兵从四面八方涌出,原来这根本就是一个圈套……。主角一行人被关进了大牢,正走投无路的时候神偷波尔(ポ-ル)出现了!他打倒了看守牢房的帝国士兵,还帮主角打开了房门。“上次你们在矿山救了我,作为报答,这次该我来救你们了!快逃吧!”说完波尔就闪人了。主角在逃离地牢的时候,却意外的发现了被囚禁在地牢1F的公主!救出公主后哥顿保护公主先走,主角等人在后面掩护。最终一行人成功脱出,这次真是因祸得福了。
这就是帝国斗技场。位置如图。
斗技场除了皇帝空无一人。在皇帝前被机关拦住。
与怪兽决斗!BOSS战!
皇帝消失,暗黑骑士和帝国士兵却出现了。波尔救出了关在地牢里的主角。
在地牢1F发现了被囚禁的公主。救出公主,一行人成功脱出。
17.吹响反攻的号角 反抗军重夺菲因城
回到反抗军基地阿鲁迪亚(アルテア),发现这里的人都不见了,与留守的士兵交谈,他告诉主角反抗军开始大反攻了,首先就是要夺回帝国军队重
3、小游戏的C++代码
/*一个火柴人游戏,亲自验证,可运行*/
/*在编译时添加如下命令:-std=c++11,否则会编译错误*/
#include <cstdio>
#include <cstdlib>
#include <Windows.h>
#include <thread>
#include <conio.h>
using namespace std;
const unsigned char CTRL_KEY = 0XE0;
const unsigned char LEFT = 0X4B;
const unsigned char RIGHT = 0X4D;
const unsigned char DOWN = 0X50;
const unsigned char UP = 0X48;
int men2[2] = {0,0};
int women2[2]={10,10};
int Game();
void gotoxy(int x,int y) //光标移动到(x,y)位置
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle,pos);
}
int TorF()
{
if ( men2[0] == women2[0] && men2[1] == women2[1] ) return 1;
else return 0;
}
int clean(int mm, int nn)
{
gotoxy ( mm, nn );
printf ( " " );
gotoxy ( mm,nn+1);
printf ( " " );
gotoxy ( mm,nn+2);
printf (" ");
}
int men(int x, int y)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE|FOREGROUND_GREEN);
gotoxy( x,y );
printf(" O");
gotoxy( x,y+1 );
printf("<H>");
gotoxy( x,y+2 );
printf("I I");
}
int women(int i,int j)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
gotoxy( i+1,j );
printf(" O");
gotoxy( i+1,j+1 );
printf("<H>");
gotoxy( i,j+2 );
printf("/I I\\");
}
int m=10, n=10;
int womenmove()
{
int turn;
int YNbreak=0;
while( YNbreak==0 )
{
YNbreak = TorF();
turn=rand()%3;
clean(m,n);
if ( turn == 0 ) m++;
if ( turn == 1 ) m--;
if ( turn == 2 ) n++;
if ( turn == 3 ) n--;
if ( m<0 ) m=0;
if ( m>=75 ) m=75;
if ( n<0 ) n=0;
if ( n>=22 ) n=22;
women( m,n );
women2[0]=m;
women2[1]=n;
Sleep(100);
}
system ( "cls" );
gotoxy ( 28,10 );
printf ( "You died!!!\n" );
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
system ( "pause" );
return 0;
}
int x=0;int y=0;
int menmove()
{
system("cls");
while (1)
{
switch(getch())
{
case UP:y--;break;
case DOWN:y++;break;
case LEFT:x--;break;
case RIGHT:x++;break;
}
system("cls");
if ( x<0 ) x=0;
if ( x>77 ) x=77;
if ( y<0 ) y=0;
if ( y>22 ) y=22;
men(x,y);
men2[0]=x;
men2[1]=y;
}
}
int Game()
{
women(10,10);
men(0,0);
int t=0;
thread qq(womenmove);
menmove();
qq.join();
return 0;
}
int main()
{
printf ( "游戏开始后,随机按下一个键,唤醒你的蓝色小人.如果你被红色的老女人碰到了,那么你就死了\n" );
printf ( "方向键操控小人\n" );
system ( "pause" );
system ( "cls" );
Game();
return 0;
}
/*留下您的赞再拿走,谢谢!*/
4、c语言游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//这个函数:判断输入是否重复
int EachDiff(int a[],int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(a[i]==a[j])
return 0;
else
return 1;
}
//这个函数:判断几个数位置和数字都对
int JudgeA(int a[],int b[],int n)
{
int i,result=0;
for(i=0;i<n;i++)
{
if(a[i]==b[i]) result++;
}
return result;
}
//这个函数:判断有几个数猜对
int JudgeB(int a[],int b[],int n)
{
int i,j,result=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i]==b[j]&&i!=j){result++;break;}
return result;
}
//这个函数:生成不重复的随机数
void CreateNum(int a[],int n)
{
int i;
srand(time(0));
do
{
for(i=0;i<n;i++)a[i]=rand()%10;
}while(!EachDiff(a,n));
}
//这个函数:判断输入是否满足要求
int JudgeInput(int a[],int n)
{
int i;
if(!EachDiff(a,n))
return 0;
else
for(i=0;i<n;i++)
if(a[i]>9||a[i]<0)
return 0;
else
return 1;
}
int main()
{
//system();
int a[4],b[4],i;
int fth=1;
printf("作者 Dante -- 谢煜东");
printf("\t\t 欢迎来到猜数字游戏\n\n");
printf(" 计算机想好了一个4位无重复数字,首位可以为零。\n 例如:0913是可以的,3502也是可以的,6787不可以。\n");
printf(" 现在您想办法把这个数字猜出来。\n\n");
printf(" 每猜一个数字,计算机会根据这个数字给出几A几B:\n 其中A前面的数字表示位置正确的数的个数,\n 而B前的数字表示数字正确而位置不对的数的个数。\n\n");
//printf(" 如正确答案为5234,而猜的人猜5346,则是1A2B。\n 其中有一个5的位置对了,记为1A;\n 而3和4这两个数字对了,而位置没对,因此记为2B;\n 合起来就是1A2B。\n\n");
printf(" 记住!1:你共有8次机会,2:输入的数字不能重复。\n\n");
printf(" 当出现\"第几次:\"字样并等待的时候,您就可以输入你要猜测的四位数字,\n 输入完之后回车确认。祝您开心\n\n 明白之后任意键游戏正式开始!");
getchar();
CreateNum(a,4); //生成4位不重复的随机数
system("cls");
printf("\t\t现在可以输入你要猜的四位数字了,输入之后回车确认。\n");
while(fth<=8)
{
int t=1000;
printf("第%d次: ",fth);
scanf("%d",&b[0]);
for(i=0;i<3;i++)
{
b[i+1]=b[i]%t;
b[i]=b[i]/t;
t/=10;
}
for(i=0;i<4;i++){printf("%d",b[i]);}
if(JudgeInput(b,4)==0)
{
printf("您的输入有问题,请重新输入\n");
continue;
}
if(JudgeA(a,b,4)==4)
{
printf("\t结果: 答对了!好聪明!");
system("pause");
//return;
}
printf("\t结果:您有%d个数字和位置都对了,有%d个数字对了而位置没对\n",JudgeA(a,b,4),JudgeB(a,b,4));
fth++;
}
printf("\n很遗憾。正确答案是:");
for(i=0;i<4;i++)
printf("%d",a[i]);
printf("下次再玩吧!88\n");
system("pause");
return 0;
}
5、dev-c++小游戏代码,急急急急!!!!!
//你看看行不行?
//贪吃蛇
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;
int gamespeed=32000;
struct Food /*食物的结构体*/
{
int x; /*食物的横坐标*/
int y; /*食物的纵坐标*/
int yes; /*食物是否出现的变量*/
}food;
struct Snack /*蛇的结构体*/
{
int x[N];
int y[N];
int node; /*蛇的节数*/
int direction; /*蛇的方向*/
int life; /*蛇的生命,0活着,1死亡*/
}snake;
void Init(void); /*图形驱动*/
void Close(void); /*关闭游戏函数*/
void DrawK(void); /*画图函数*/
void GameOver(void);/*输出失败函数*/
void GamePlay(); /*游戏控制函数 主要程序*/
void PrScore(void); /*分数输出函数*/
DELAY(char ch)/*调节游戏速度*/
{
if(ch=='3')
{
delay(gamespeed); /*delay是延迟函数*/
delay(gamespeed);
}
else if(ch=='2')
{
delay(gamespeed);
}
}
Menu()/*游戏开始菜单*/
{
char ch;
printf("Please choose the gamespeed:\n");
printf("1-Fast 2-Normal 3-Slow\n");
printf("\nPlease Press The numbers..\n");
do
{ch=getch();}
while(ch!='1'&&ch!='2'&&ch!='3');
clrscr();
return(ch);
}
/*主函数*/
void main(void)
{
int ch;
ch=Menu();
Init();
DrawK();
GamePlay(ch);
Close();
}
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
void DrawK(void)
{
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;i<=600;i+=10)
{
rectangle(i,40,i+10,49); /*画出上边框*/
rectangle(i,451,i+10,460); /*画出下边框*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*画出左边框*/
rectangle(601,i,610,i+10); /*画出右边框*/
}
}
void GamePlay(char ch)
{
randomize(); /*随机数发生器*/
food.yes=1; /*1代表要出现食物,0表示以存在食物*/
snake.life=0;
snake.direction=1;
snake.x[0]=100;snake.y[0]=100;
snake.x[1]=110;snake.y[1]=100;
snake.node=2;
PrScore();
while(1) /*可以重复游戏*/
{
while(!kbhit()) /*在没有按键的情况下蛇自己移动*/
{
if(food.yes==1) /*需要食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60; /*使用rand函数随机产生食物坐标*/
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++; /*判断食物是否出现在整格里*/
food.yes=0; /*现在有食物了*/
}
if(food.yes==0) /*有食物了就要显示出来*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--) /*贪吃蛇的移动算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1]; /*贪吃蛇的身体移动算法*/
}
switch(snake.direction) /*贪吃蛇的头部移动算法,以此来控制移动*/
{
case 1:snake.x[0]+=10;break;
case 2:snake.x[0]-=10;break;
case 3:snake.y[0]-=10;break;
case 4:snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++) /*判断是否头部与身体相撞*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();
snake.life=1;
break;
}
}
/*下面是判断是否撞到墙壁*/
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
{
GameOver();
snake.life=1;
}
if(snake.life==1) /*如果死亡就退出循环*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y) /*判断蛇是否吃到食物*/
{
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y-10); /*吃的食物后用黑色将食物擦去*/
snake.x[snake.node]=-20;snake.y[snake.node]=-20; /*现把增加的一节放到看不到的地方去*/
snake.node++;
food.yes=1;
score+=10;
PrScore();
}
setcolor(4); /*每次移动后将后面的身体擦去*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(gamespeed);
DELAY(ch);
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
if(snake.life==1)
break;
key=bioskey(0); /*接受按键*/
if(key==ESC)
break;
else
if(key==UP&&snake.direction!=4)/*判断是否改变方向*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}
}
void GameOver(void)
{
cleardevice();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"scord:%d",score);
outtextxy(55,20,str);
}
void Close(void)
{
getch();
closegraph();
}
6、求一个安卓开发小游戏源代码,临时交作业用
package com.fiveChess;
import android.app.Activity;
import android.os.Bundle;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
GameView gameView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
Display display = this.getWindowManager().getDefaultDisplay();
gameView = new GameView(this,display.getWidth(),display.getHeight());
setContentView(gameView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
e68a847a6431333335326161menu.add("重新开始").setIcon(android.R.drawable.ic_menu_myplaces);
menu.add("退出");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getTitle().equals("重新开始")){
gameView.canPlay = true;
gameView.chess = new int[gameView.row][gameView.col];
gameView.invalidate();
}else if(item.getTitle().equals("退出")){
finish();
}
return super.onOptionsItemSelected(item);
}
}
package com.fiveChess;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;
public class GameView extends View {
Context context = null;
int screenWidth,screenHeight;
String message = "";//提示轮到哪个玩家
int row,col; //划线的行数和列数
int stepLength = 30;//棋盘每格间距
int[][] chess = null;//0代表没有棋子,1代表是黑棋,2代表白旗
boolean isBlack = true;
boolean canPlay = true;
public GameView(Context context,int screenWidth,int screenHeight) {
super(context);
this.context = context;
this.screenWidth = screenWidth;
this.screenHeight = screenHeight;
this.message = "黑棋先行";
row = (screenHeight-50)/stepLength+1;
col = (screenWidth-10)/stepLength+1;
chess = new int[row][col];
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawRect(0, 0, screenWidth, screenHeight, paint);//画背景
paint.setColor(Color.BLUE);
paint.setTextSize(25);
canvas.drawText(message, (screenWidth-100)/2, 30, paint);//画最顶层的字
paint.setColor(Color.BLACK);
//画棋盘
for(int i=0;i<row;i++){
canvas.drawLine(10, 50+i*stepLength, 10+(col-1)*stepLength, 50+i*stepLength, paint);
}
for(int i=0;i<col;i++){
canvas.drawLine(10+i*stepLength,50,10+i*stepLength,50+(row-1)*stepLength, paint);
}
for(int r=0;r<row;r++){
for(int c=0;c<col;c++){
if(chess[r][c] == 1){
paint.setColor(Color.BLACK);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}else if(chess[r][c] == 2){
//画白棋
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
paint.setColor(Color.BLACK);
paint.setStyle(Style.STROKE);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(!canPlay){return false;}
float x = event.getX();
float y = event.getY();
int r = Math.round((y-50)/stepLength);
int c = Math.round((x-10)/stepLength);
if(r<0 || r>row-1 || c<0 || c>col-1){return false;}
if(chess[r][c]!=0){return false;}//若有棋子则不再画棋子了
if(isBlack){
chess[r][c] = 1;
isBlack = false;
message = "轮到白棋";
}else{
chess[r][c] = 2;
isBlack = true;
message = "轮到黑棋";
}
invalidate();
if(judge(r, c,0,1)) return false;
if(judge(r, c,1,0)) return false ;
if(judge(r, c,1,1)) return false;
if(judge(r, c,1,-1)) return false;
return super.onTouchEvent(event);
}
private boolean judge(int r, int c,int x,int y) {//r,c表示行和列,x表示在y方向上的偏移,y表示在x方向上的偏移
int count = 1;
int a = r;
int b = c;
while(r>=0 && r<row && c>=0 && c<col && r+x>=0 && r+x<row && c+y>=0 && c+y<col && chess[r][c] == chess[r+x][c+y]){
count++;
if(y>0){
c++;
}else if(y<0){
c--;
}
if(x>0){
r++;
}else if(x<0){
r--;
}
}
while(a>=0 && a<row && b>=0 && b<col && a-x>=0 && a-x<row && b-y>=0 && b-y<col && chess[a][b] == chess[a-x][b-y]){
count++;
if(y>0){
b--;
}else if(y<0){
b++;
}
if(x>0){
a--;
}else if(x<0){
a++;
}
}
if(count>=5){
String str = "";
if(isBlack){
str = "白棋胜利";
}else{
str = "黑棋胜利";
}
new AlertDialog.Builder(context).setTitle("游戏结束").setMessage(str).setPositiveButton("重新开始", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
chess = new int[row][col];
invalidate();
}
}).setNegativeButton("观看棋局", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
canPlay = false;
}
}).show();
return true;
}
return false;
}
}
PS:五子棋,无需图片,直接在程序里画出来的。注意我发的是两个文件,一个activity,一个类文件,别把它当成一个文件了
7、求don'tjudgechallenge ,别以貌取人。游戏的全部背景音乐
worth it, the hills, cheerleader
还有两首 New Thang, Chains
8、求C++小游戏源代码啊~
非专业就不以代码做答了,有需要可以去爱给网之类的网站上去看看,小游戏代码还比较全的
9、用C++编写的小游戏源代码
五子棋的代码:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
using namespace std;
const int N=15; //15*15的棋盘
const char ChessBoardflag = ' ';//棋盘标志
const char flag1='o';//玩家1或电脑的棋子标志
const char flag2='X';//玩家2的棋子标志
typedef struct Coordinate//坐标类
{
int x; //代表行
int y; //代表列
}Coordinate;
class GoBang//五子棋类
{
public:
GoBang()//初始化
{
InitChessBoard();
}
void Play() //下棋
{
Coordinate Pos1;// 玩家1或电脑
Coordinate Pos2;//玩家2
int n = 0;
while (1)
{
int mode = ChoiceMode();
while (1)
{
if (mode == 1) //电脑vs玩家
{
ComputerChess(Pos1,flag1); // 电脑下棋
if (GetVictory(Pos1, 0, flag1) == 1) //0表示电脑,真表示获胜
break;
PlayChess(Pos2, 2, flag2); //玩家2下棋
if (GetVictory(Pos2, 2, flag2)) //2表示玩家2
break;
}
else//玩家1vs玩家2
{
PlayChess(Pos1, 1, flag1); // 玩家1下棋
if (GetVictory(Pos1, 1, flag1))//1表示玩家1
break;
PlayChess(Pos2, 2, flag2); //玩家2下棋
if (GetVictory(Pos2, 2, flag2))//2表示玩家2
break;
}
}
cout << "***再来一局***" << endl;
cout << "y or n :";
char c = 'y';
cin >> c;
if (c == 'n')
break;
}
}
protected:
int ChoiceMode() //选择模式
{
int i = 0;
system("cls");//系统调用,清屏
InitChessBoard(); //重新初始化棋盘
cout << "***0、退出1、电脑vs玩家2、玩家vs玩家***" << endl;
while (1)
{
cout << "请选择:";
cin >> i;
if (i == 0) //选择0退出
exit(1);
if (i == 1 || i == 2)
return i;
cout << "输入不合法" << endl;
}
}
void InitChessBoard()//初始化棋盘
{
for (int i = 0; i < N + 1; ++i)
{
for (int j = 0; j < N + 1; ++j)
{
_ChessBoard[i][j] = ChessBoardflag;
}
}
}
void PrintChessBoard()//打印棋盘,这个函数可以自己调整
{
system("cls");//系统调用,清空屏幕
for (int i = 0; i < N+1; ++i)
{
for (int j = 0; j < N+1; ++j)
{
if (i == 0) //打印列数字
{
if (j!=0)
printf("%d", j);
else
printf(" ");
}
else if (j == 0)//打印行数字
printf("%2d ", i);
else
{
if (i < N+1)
{
printf("%c |",_ChessBoard[i][j]);
}
}
}
cout << endl;
cout << " ";
for (int m = 0; m < N; m++)
{
printf("--|");
}
cout << endl;
}
}
void PlayChess(Coordinate& pos, int player, int flag) //玩家下棋
{
PrintChessBoard(); //打印棋盘
while (1)
{
printf("玩家%d输入坐标:", player);
cin >> pos.x >> pos.y;
if (JudgeValue(pos) == 1)//坐标合法
break;
cout << "坐标不合法,重新输入" << endl;
}
_ChessBoard[pos.x][pos.y] = flag;
}
void ComputerChess(Coordinate& pos, char flag) //电脑下棋
{
PrintChessBoard(); //打印棋盘
int x = 0;
int y = 0;
while (1)
{
x = (rand() % N) + 1;//产生1~N的随机数
srand((unsigned int) time(NULL));
y = (rand() % N) + 1; //产生1~N的随机数
srand((unsigned int) time(NULL));
if (_ChessBoard[x][y] == ChessBoardflag)//如果这个位置是空的,也就是没有棋子
break;
}
pos.x = x;
pos.y = y;
_ChessBoard[pos.x][pos.y] = flag;
}
int JudgeValue(const Coordinate& pos) //判断输入坐标是不是合法
{
if (pos.x > 0 && pos.x <= N&&pos.y > 0 && pos.y <= N)
{
if (_ChessBoard[pos.x][pos.y] == ChessBoardflag)
{
return 1;//合法
}
}
return 0;//非法
}
int JudgeVictory(Coordinate pos, char flag) //判断有没有人胜负(底层判断)
{
int begin = 0;
int end = 0;
int begin1 = 0;
int end1 = 0;
//判断行是否满足条件
(pos.y - 4) > 0 ? begin = (pos.y - 4) : begin = 1;
(pos.y + 4) >N ? end = N : end = (pos.y + 4);
for (int i = pos.x, j = begin; j + 4 <= end; j++)
{
if (_ChessBoard[i][j] == flag&&_ChessBoard[i][j + 1] == flag&&
_ChessBoard[i][j + 2] == flag&&_ChessBoard[i][j + 3] == flag&&
_ChessBoard[i][j + 4] == flag)
return 1;
}
//判断列是否满足条件
(pos.x - 4) > 0 ? begin = (pos.x - 4) : begin = 1;
(pos.x + 4) > N ? end = N : end = (pos.x + 4);
for (int j = pos.y, i = begin; i + 4 <= end; i++)
{
if (_ChessBoard[i][j] == flag&&_ChessBoard[i + 1][j] == flag&&
_ChessBoard[i + 2][j] == flag&&_ChessBoard[i + 3][j] == flag&&
_ChessBoard[i + 4][j] == flag)
return 1;
}
int len = 0;
//判断主对角线是否满足条件
pos.x > pos.y ? len = pos.y - 1 : len = pos.x - 1;
if (len > 4)
len = 4;
begin = pos.x - len; //横坐标的起始位置
begin1 = pos.y - len;//纵坐标的起始位置
pos.x > pos.y ? len = (N - pos.x) : len = (N - pos.y);
if (len>4)
len = 4;
end = pos.x + len; //横坐标的结束位置
end1 = pos.y + len;//纵坐标的结束位置
for (int i = begin, j = begin1; (i + 4 <= end) && (j + 4 <= end1); ++i, ++j)
{
if (_ChessBoard[i][j] == flag&&_ChessBoard[i + 1][j + 1] == flag&&
_ChessBoard[i + 2][j + 2] == flag&&_ChessBoard[i + 3][j + 3] == flag&&
_ChessBoard[i + 4][j + 4] == flag)
return 1;
}
//判断副对角线是否满足条件
(pos.x - 1) >(N - pos.y) ? len = (N - pos.y) : len = pos.x - 1;
if (len > 4)
len = 4;
begin = pos.x - len; //横坐标的起始位置
begin1 = pos.y + len;//纵坐标的起始位置
(N - pos.x) > (pos.y - 1) ? len = (pos.y - 1) : len = (N - pos.x);
if (len>4)
len = 4;
end = pos.x + len; //横坐标的结束位置
end1 = pos.y - len;//纵坐标的结束位置
for (int i = begin, j = begin1; (i + 4 <= end) && (j - 4 >= end1); ++i, --j)
{
if (_ChessBoard[i][j] == flag&&_ChessBoard[i + 1][j - 1] == flag&&
_ChessBoard[i + 2][j - 2] == flag&&_ChessBoard[i + 3][j - 3] == flag&&
_ChessBoard[i + 4][j - 4] == flag)
return 1;
}
for (int i = 1; i < N + 1; ++i) //棋盘有没有下满
{
for (int j =1; j < N + 1; ++j)
{
if (_ChessBoard[i][j] == ChessBoardflag)
return 0;//0表示棋盘没满
}
}
return -1;//和棋
}
bool GetVictory(Coordinate& pos, int player, int flag) //对JudgeVictory的一层封装,得到具体那个玩家获胜
{
int n = JudgeVictory(pos, flag); //判断有没有人获胜
if (n != 0)//有人获胜,0表示没有人获胜
{
PrintChessBoard();
if (n == 1)//有玩家赢棋
{
if (player == 0) //0表示电脑获胜,1表示玩家1,2表示玩家2
printf("***电脑获胜*** ");
else
printf("***恭喜玩家%d获胜*** ", player);
}
else
printf("***双方和棋*** ");
return true;//已经有人获胜
}
return false; //没有人获胜
}
private:
char _ChessBoard[N+1][N+1];
};
(9)游戏judge攻略扩展资料:设计思路
1、进行问题分析与设计,计划实现的功能为,开局选择人机或双人对战,确定之后比赛开始。
2、比赛结束后初始化棋盘,询问是否继续比赛或退出,后续可加入复盘、悔棋等功能。
3、整个过程中,涉及到了棋子和棋盘两种对象,同时要加上人机对弈时的AI对象,即涉及到三个对象。