青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼

石頭剪子布的猜拳游戲,在VC下編譯運(yùn)行下,生成的.EXE文件,就可以單獨(dú)拿出來玩游戲了。
這個(gè)游戲?qū)儆?.1版本,最原始的1.0版本主要部分和這個(gè)差不多,1.1主要是在原來的基礎(chǔ)上與玩家的交互做了一些更加友好的改進(jìn)(感謝提出改進(jìn)意見的宿舍兄弟)
程序基本沒有太大的技術(shù)含量,自認(rèn)為程序核心的部分:電腦隨機(jī)給出的猜拳。本人想到了一個(gè)很簡(jiǎn)單但自認(rèn)為挺巧妙的方法(小小的驕傲下),不多說了看代碼吧,如果代碼有什么潛在的bug漏洞,或者有更好的改進(jìn),請(qǐng)留言回復(fù),非常謝謝。
  1#include<iostream>
  2#include<ctime>
  3using namespace std;
  4
  5int win_or_loss(int);//判斷輸贏的子函數(shù)
  6void baoshi(time_t&);//給出當(dāng)前系統(tǒng)時(shí)間的子函數(shù)
  7void keep_window_open();//讓程序運(yùn)行完畢后,窗口不立馬消失
  8int main()
  9{
 10    time_t the_time_1,the_time_2;
 11
 12    char q;
 13    int win(0),loss(0),ping(0);
 14    double gailv(0),sum(0);
 15    cout<<"歡迎您玩 石頭-剪子-布 游戲(游戲作者:XXX)  版本 1.1\n"<<endl;
 16    cout<<"請(qǐng)合理安排時(shí)間,切勿沉迷于游戲!\n"<<endl;
 17
 18    baoshi(the_time_1);
 19    cout<<"游戲說明:數(shù)字1代表石頭    數(shù)字2代表剪子    數(shù)字3代表布\n"<<endl;    
 20
 21    
 22    
 23    
 24    do{
 25        cout<<"\n請(qǐng)問您一共想要玩幾次猜拳游戲,請(qǐng)輸入大于0的正整數(shù)(建議您至少玩十次):"<<endl;
 26        double times;
 27        //輸入的次數(shù)必須為大于0的正整數(shù),不可為0,負(fù)數(shù),浮點(diǎn)數(shù),字符或者是字符串,如果出現(xiàn)非法輸入,下面代碼是用來處理這些非法輸入
 28        while(!(cin>>times))
 29        {
 30            cout<<"您的輸入不合法,必須為一個(gè)數(shù)字,請(qǐng)重新輸入:"<<endl;
 31            cin.clear();
 32            cin.sync();
 33        }

 34        if(times<=0)
 35        {
 36            cout<<"您的輸入不合法,必須為正整數(shù)!\n"<<endl;
 37            cin.clear();
 38            cin.sync();
 39            q='y';
 40            continue;
 41        }

 42        else if(times!=int(times))
 43        {
 44            cout<<"您的輸入不合法,必須為正整數(shù)!\n"<<endl;
 45            cin.clear();
 46            cin.sync();
 47            q='y';
 48            continue;
 49        }

 50        //游戲正式開始
 51        for(int i=0;i<times;++i)
 52        {
 53            cout<<"\n請(qǐng)輸入您打算猜的拳(用數(shù)字123代替,數(shù)字1代表石頭  數(shù)字2代表剪子  數(shù)字3代表布)"<<endl;
 54        
 55            while(1)
 56            {
 57                double t;
 58                cin>>t;
 59                if(cin.bad())
 60                {
 61                    cerr<<"Sorry,出現(xiàn)了系統(tǒng)故障,請(qǐng)重新運(yùn)行游戲!\n"<<endl;
 62                    return 1;
 63                }

 64                //用來處理非法輸入
 65                if(cin.fail())
 66                {
 67                    cerr<<"Sorry!,請(qǐng)您必須輸入一個(gè)合法的數(shù)字(1 or 2 or 3)"<<endl;
 68                    cout<<"請(qǐng)輸入您打算猜的拳(用數(shù)字123代替)"<<endl;
 69                    cin.clear();
 70                    cin.sync();
 71                    continue;
 72                }
else if(t!=1&&t!=2&&t!=3)
 73                {
 74                    cerr<<"Sorry!,請(qǐng)您必須輸入一個(gè)合法的數(shù)字(1 or 2 or 3)\n"<<endl;
 75                    cout<<"請(qǐng)輸入您打算猜的拳(用數(shù)字123代替)\n"<<endl;
 76                    cin.clear();
 77                    cin.sync();
 78                    continue;
 79                }
else
 80                {
 81                    cout<<""<<i+1<<"次猜拳游戲 ";
 82                    if(t==1)
 83                        cout<<"您猜的拳是:石頭"<<endl;
 84                    else if(t==2)
 85                        cout<<"您猜的拳是:剪刀"<<endl;
 86                    else
 87                        cout<<"您猜的拳是:布"<<endl;
 88                    int n=win_or_loss(t);
 89                    if(n==0)
 90                        ++ping;
 91                    else if(n>0)
 92                        ++win;//統(tǒng)計(jì)贏的次數(shù)
 93                    else
 94                        ++loss;//統(tǒng)計(jì)輸?shù)拇螖?shù)
 95                    break;
 96                }

 97            }

 98            if(i==times-1)
 99                cout<<"您的猜拳次數(shù)已經(jīng)達(dá)到您所設(shè)定的"<<times<<"次\n"<<endl;
100        }

101            cout<<"請(qǐng)問是否還要繼續(xù)本游戲(Y/other)"<<endl;
102            cin>>q;//在玩夠開始自己所設(shè)的次數(shù)后,如果仍然打算繼續(xù),則輸入'y'
103    }
while(q=='Y'||q=='y');
104    
105    //對(duì)整個(gè)游戲過程做一個(gè)完整統(tǒng)計(jì)
106    sum=win+loss+ping;
107    gailv=win/sum;
108    cout<<"\n本次游戲您一共猜拳:"<<sum<<""<<endl;
109    cout<<"其中一共勝利:"<<win<<""<<endl;
110    cout<<"其中一共輸了:"<<loss<<""<<endl;
111    cout<<"其中一共打平:"<<ping<<""<<endl;
112    cout<<"您的勝率為:"<<gailv*100<<"%"<<endl;
113    cout<<"您的敗率為:"<<loss/sum*100<<"%"<<endl;
114    cout<<"您的打平的概率為:"<<(1-loss/sum-gailv)*100<<"%"<<endl;
115    if(sum<10)
116        cout<<"由于您猜拳的次數(shù)小于10次,不具有統(tǒng)計(jì)學(xué)意義,所以您與電腦到底誰厲害,無法評(píng)判,請(qǐng)大俠重新來過!\n"<<endl;
117    else if(gailv<0.4)
118        cout<<"您真是個(gè)菜鳥,連二進(jìn)制的電腦都比不過,笨死了!\n"<<endl;
119    else
120        cout<<"大俠好厲害啊,竟然贏了電腦,佩服佩服,看來我得重新寫代碼啊\n"<<endl;
121    
122    baoshi(the_time_2);
123    cout<<"本次游戲您一共花費(fèi)了:"<<the_time_2-the_time_1<<"秒\n"<<endl;
124
125    keep_window_open();
126    return 0;
127}

128
129//游戲核心代碼,判斷輸贏
130int win_or_loss(int t)
131{
132    time_t the_time;
133    struct tm *tm_ptr;
134    int rec_sec;
135
136    //電腦的猜拳最好的辦法是設(shè)定一組完全的隨機(jī)數(shù),但是一般很難設(shè)計(jì)出完全的隨機(jī)數(shù),因此想了一個(gè)很巧妙的方法,取玩游戲時(shí)的系統(tǒng)時(shí)間的秒,根據(jù)當(dāng)前的秒,電腦給出相應(yīng)猜出的拳
137    //這樣用一種相對(duì)比較隨機(jī)的方法,即便玩游戲的人知道了隨機(jī)數(shù)的規(guī)律,也很難完全獲勝
138    the_time=time((time_t *)0);
139    tm_ptr=gmtime(&the_time);
140    rec_sec=tm_ptr->tm_sec;
141
142
143    int ans;
144    //switch中主要分了三種情況,第一種是60以內(nèi)的素?cái)?shù),然后又添加了幾個(gè)其他的,湊夠20;第二種是能被3除開的,然后再添加幾個(gè)湊成20個(gè);剩下的為第三種
145    switch(rec_sec)
146    {
147    case 2:case 8:case 5:case 7:case 11:case 13:case 17:case 19:case 23:case 29:case 31:case 37:case 41:case 43:case 47:case 53:case 59:case 22:case 38:case 56:
148        cout<<"電腦游戲程序的猜的拳是:石頭"<<endl;
149        ans=1;
150        break;
151    case 0:case 3:case 6:case 9:case 12:case 15:case 18:case 21:case 24:case 27:case 30:case 33:case 36:case 39:case 42:case 45:case 48:case 51:case 54:case 57:
152        cout<<"電腦游戲程序的猜的拳是:剪子"<<endl;
153        ans=2;
154        break;
155    default:
156        cout<<"電腦游戲程序的猜的拳是:布"<<endl;
157        ans=3;
158        break;
159    }

160
161    if(t==ans)
162    {
163        cout<<"您這次和電腦打了一個(gè)平手!"<<endl;
164        return 0;
165    }

166    
167    switch(t)
168    {
169    case 1:
170        if(ans==2)
171        {
172            cout<<"恭喜您!您這次是僥幸贏了電腦!\n"<<endl;
173            return 1;
174        }

175        else
176        {
177            cout<<"哈哈,笨蛋!輸給電腦了吧!"<<endl;
178            return -1;
179        }

180        break;
181    case 2:
182        if(ans==3)
183        {
184            cout<<"恭喜您!您這次是僥幸贏了電腦\n"<<endl;
185            return 1;
186        }

187        else
188        {
189            cout<<"哈哈,笨蛋!輸給電腦了吧!"<<endl;
190            return -1;
191        }

192        break;
193    case 3:
194        if(ans==1)
195        {
196            cout<<"恭喜您!您這次是僥幸贏了電腦\n"<<endl;
197            return 1;
198        }

199        else
200        {
201            cout<<"哈哈,笨蛋!輸給電腦了吧!"<<endl;
202            return -1;
203        }

204        break;
205    }

206}

207inline void keep_window_open()
208{
209    cin.clear();
210    cout << "Please enter a character to exit\n";
211    char ch;
212    cin >> ch;
213    return;
214}

215
216inline void baoshi(time_t &timeval)
217{
218    (void)time(&timeval);
219    cout<<"當(dāng)前北京時(shí)間為:"<<ctime(&timeval)<<"\n"<<endl;
220    return;
221}

posted on 2012-01-13 22:30 古月 閱讀(3990) 評(píng)論(7)  編輯 收藏 引用 所屬分類: C/C++

評(píng)論

# re: 鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼[未登錄] 2012-01-13 22:47 foxtail

....  回復(fù)  更多評(píng)論   

# re: 鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼 2012-01-14 07:36 Mensch88

先鼓掌鼓勵(lì)一下
不過我想以時(shí)間為種子用隨機(jī)函數(shù)rand()會(huì)更好些  回復(fù)  更多評(píng)論   

# re: 鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼 2012-01-14 09:02 right

代碼亂,命名不規(guī)范,風(fēng)格不統(tǒng)一,邏輯太簡(jiǎn)單,如果初學(xué)的話,也算正常,慢慢的會(huì)懂,如果不是的話,建議lz提高這些方面的修養(yǎng)  回復(fù)  更多評(píng)論   

# re: 鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼 2012-01-14 13:08 古月

謝謝了,您說的那個(gè)rand()函數(shù)我還沒有接觸過,我研究下您說的思路,試試看@Mensch88
  回復(fù)  更多評(píng)論   

# re: 鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼 2012-01-14 13:09 古月

非常感謝您的寶貴意見,確實(shí)有些亂,命名不太規(guī)范,以后一定注意提高,謝謝@right
  回復(fù)  更多評(píng)論   

# re: 鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼 2012-01-14 17:32 Zblc

哈哈 已經(jīng)算很不錯(cuò)啦 繼續(xù)加油啊  回復(fù)  更多評(píng)論   

# re: 鄙人這輩子編寫的第一個(gè)游戲程序:猜拳! 好激動(dòng),共享下c++源代碼 2012-01-16 20:16 BreakMind

樓主,加油。

寫得很不錯(cuò),我當(dāng)年連C++都搞不明白是什么東西,拿著C++當(dāng)C語言使用。  回復(fù)  更多評(píng)論   

<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

C++/C

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩一级精品| 一区二区三区国产精品| 亚洲精品美女久久7777777| 亚洲日本成人在线观看| 亚洲先锋成人| 久久中文久久字幕| 欧美日韩喷水| 韩国精品在线观看| 一区二区三区精品久久久| 久久不射中文字幕| 亚洲国产高清在线| 亚洲欧美视频在线观看视频| 母乳一区在线观看| 国产伦精品一区二区三区照片91 | 亚洲欧美日韩在线一区| 毛片基地黄久久久久久天堂| 99精品视频免费观看视频| 欧美在线视频一区| 欧美日韩一区二区三区免费看| 国产乱码精品一区二区三区忘忧草 | 老司机精品视频网站| 欧美午夜不卡影院在线观看完整版免费| 国产专区欧美专区| 国产精品99久久久久久久女警| 老色鬼精品视频在线观看播放| 99视频超级精品| 麻豆91精品91久久久的内涵| 国产乱码精品一区二区三区五月婷| 亚洲日本免费| 开元免费观看欧美电视剧网站| 99国产精品视频免费观看| 先锋影音久久| 欧美不卡高清| 在线观看一区二区精品视频| 欧美一区综合| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产精品老女人精品视频| 亚洲片区在线| 美女精品在线| 欧美怡红院视频| 国产精品美女主播在线观看纯欲| 99视频精品免费观看| 欧美成人免费视频| 久久精品91| 国产亚洲精品美女| 午夜视频久久久久久| 99精品欧美一区二区三区综合在线| 麻豆成人在线观看| 有码中文亚洲精品| 久久人人97超碰国产公开结果| 亚洲综合日本| 国产精品久久久久天堂| 亚洲性图久久| 日韩午夜三级在线| 欧美日韩精品在线播放| 99精品国产在热久久婷婷| 欧美激情1区2区| 欧美成人精品一区二区| 亚洲国产女人aaa毛片在线| 猛男gaygay欧美视频| 久久gogo国模啪啪人体图| 国产午夜精品久久久久久免费视| 性欧美超级视频| 亚洲综合首页| 国产日韩欧美综合一区| 欧美亚洲免费| 欧美一区二区三区在线视频| 国产一级精品aaaaa看| 久久国产色av| 久久国产精品黑丝| 黄色成人av网| 欧美~级网站不卡| 美女被久久久| 亚洲精品美女在线观看| 亚洲人成77777在线观看网| 欧美激情综合色综合啪啪| 99精品免费| 一区二区激情| 国产精品揄拍500视频| 久久精品国产一区二区电影| 欧美专区第一页| 亚洲第一福利在线观看| 亚洲二区在线| 欧美日韩妖精视频| 午夜精品在线观看| 久久狠狠婷婷| 亚洲国产精品尤物yw在线观看| 亚洲国产高清在线| 欧美日韩精品一区| 欧美在线网址| 久久久欧美精品sm网站| 亚洲国产精品一区二区三区| 亚洲国产一区二区三区在线播| 欧美日韩国产在线一区| 午夜精品福利电影| 久久精品国产一区二区三区| 亚洲国产中文字幕在线观看| 亚洲美女精品一区| 国产欧美日韩伦理| 欧美大片免费久久精品三p | 亚洲五月婷婷| 午夜在线播放视频欧美| 在线成人av| 亚洲免费激情| 国产一级一区二区| 亚洲高清视频一区| 国产精品久久久久久久久免费桃花 | 国产精品sss| 久久蜜桃香蕉精品一区二区三区| 免费日韩成人| 欧美一级久久久| 美女国产一区| 性色av一区二区三区红粉影视| 久久久久久久综合日本| 一区二区日韩免费看| 欧美一二三视频| 亚洲人体偷拍| 欧美一级大片在线免费观看| 亚洲人永久免费| 亚洲欧美日韩视频一区| 亚洲人成久久| 欧美一级二级三级蜜桃| 99国产精品99久久久久久| 欧美一区免费视频| 一区二区动漫| 久久视频国产精品免费视频在线| 亚洲天堂网在线观看| 久久午夜精品一区二区| 亚洲欧美清纯在线制服| 欧美 日韩 国产在线| 欧美在线日韩| 欧美日韩一区二区三区在线 | 亚洲国产精品视频一区| 国产嫩草一区二区三区在线观看| 亚洲国产91| 红桃视频欧美| 亚洲欧美日韩国产成人| 99视频一区| 久久在线免费| 久久久99爱| 国产精品成人一区二区三区吃奶 | 欧美精品电影| 免费观看欧美在线视频的网站| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久 | 亚洲一区精品在线| 欧美不卡高清| 蜜桃久久精品乱码一区二区| 国产日韩精品在线播放| 一本大道久久a久久综合婷婷| 91久久精品一区二区三区| 久久成人精品一区二区三区| 亚洲综合清纯丝袜自拍| 欧美日韩国产页| 亚洲国产成人高清精品| 在线免费高清一区二区三区| 欧美一级播放| 欧美在线视频一区二区| 国产精品www994| 99国产精品99久久久久久| 亚洲人成在线观看| 日韩一级大片在线| 亚洲区免费影片| 亚洲二区在线视频| 久久国产精品黑丝| 久久精品人人| 国产亚洲精品久久飘花 | 国产精品一区二区三区免费观看| 99国产精品99久久久久久| 99精品国产在热久久| 欧美国产视频日韩| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美日韩亚洲另类| 亚洲美女电影在线| 一本色道久久综合狠狠躁篇怎么玩 | 国产午夜精品久久久久久免费视| 亚洲欧美国产毛片在线| 性欧美大战久久久久久久久| 国产精品视频一二三| 亚洲一二三区精品| 欧美一区二区三区在| 国产欧美91| 欧美一区二区三区免费看| 欧美一级视频免费在线观看| 国产精品成人免费视频| 亚洲一区二区在线| 欧美一级二级三级蜜桃| 国产亚洲日本欧美韩国| 久久成人国产| 麻豆国产精品777777在线| 在线观看亚洲a| 免费观看成人www动漫视频| 亚洲国产另类久久精品| 在线视频日韩| 国产精品久久久久久久久久尿| 亚洲欧美高清| 久久午夜电影网| 亚洲国产乱码最新视频| 欧美日韩成人免费| 亚洲一区二区三区在线看 | 久久久91精品国产一区二区精品|