2015年1月19日 星期一
2015年1月18日 星期日
2015年1月17日 星期六
2015年1月15日 星期四
[專題] 第二組-個性測驗
exe檔
PPT
func_main
mainfunc
標頭檔
PPT
func_main
#include#include #include"期末專題func.h" int main() { int select; while(1) { mainmenu(); printf("請選擇測驗種類唷>__^(輸入數字):"); scanf_s("%d",&select); if(select==0) break; else { switch(select) { case 1: personality_1_1(); break; case 2: love1(); break; case 3: submenu_mental(); break; } } } system("pause"); }
#include#include #include"期末專題func.h" void mainmenu() { printf("=================主選單==================\n"); printf("==============各種小測驗XDD==============\n"); printf("\n"); printf("\n"); printf("0.退出程式\n"); printf("1.個性測驗\n"); printf("2.愛情測驗\n"); printf("3.心理測驗\n"); } void submenu_mental() { int select; printf("============心理測驗選單=================\n"); printf("==========選擇哪種測驗呢哈哈=================\n"); printf("1.心理測驗-你有多大的心寬廣度?\n"); printf("2.心理測驗-你多大會結婚?\n"); printf("請選擇其中一種測驗:\n"); scanf_s("%d",&select); switch(select) { case 1: mental1(); break; case 2: mental2(); break; default: system("CLS"); printf("指令無效請選擇有效數字選項\n"); submenu_mental(); break; } printf("\n"); printf("\n"); } void yesnomenu() { printf("1.是的唷>__^\n"); printf("2.才不呢亨ノ(ˋ3ˊ)ノ\n"); } void personality_1_1() { int select; system("CLS"); printf("你認為你是一個有個性,有自己的思想與主見的人嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_2(); break; case 2: personality_1_8(); break; default: mess(); break; } } void personality_1_2() { int select; printf("你比較喜歡星型還是心型的項鍊呢?\n"); printf("1.星型的唷>__^\n"); printf("2.心型的唷>__^\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_3(); break; case 2: personality_1_9(); break; default: mess(); break; } } void personality_1_3() { int select; printf("你喜歡玩洋娃娃或機器人嗎?\n"); printf("1.喜歡的唷>__^\n"); printf("2.才不呢亨ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_11(); break; case 2: personality_1_4(); break; default: mess(); break; } } void personality_1_4() { int select; printf("你對中國的傳統服飾有興趣嗎?\n"); printf("1.有>__^\n"); printf("2.超級有\(^o^)/\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_11(); break; case 2: personality_1_5(); break; default: mess(); break; } } void personality_1_5() { int select; printf("你的衣櫃裡有紅色衣服嗎?\n"); printf("1.有的唷>__^\n"); printf("2.才沒有呢亨ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_6(); break; case 2: personality_1_12(); break; default: mess(); break; } } void personality_1_6() { int select; printf("你願意申請一份要求工作經驗的職位嗎?\n"); printf("1.願意的唷>__^\n"); printf("2.亨才不要咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_7(); break; case 2: personality_1_13(); break; default: mess(); break; } } void personality_1_7() { int select; printf("你受到朋友的歡迎是因為你是個可靠的人嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: consequenceA(); break; case 2: consequenceB(); break; default: mess(); break; } } void personality_1_8() { int select; printf("你是短頭髮的嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_2(); break; case 2: personality_1_15(); break; default: mess(); break; } } void personality_1_9() { int select; printf("你是否皮膚白皙白皙的呢?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_3(); break; case 2: personality_1_16(); break; default: mess(); break; } } void personality_1_10() { int select; printf("1.向日葵唷>__^\n"); printf("2.野菊花唷>__^\n"); printf("請從上面兩朵花選擇比較喜歡的那種唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_14(); break; case 2: personality_1_11(); break; default: mess(); break; } } void personality_1_11() { int select; printf("你是否是一個有責任心的學生或職員呢?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_5(); break; case 2: personality_1_17(); break; default: mess(); break; } } void personality_1_12() { int select; printf("你最近對手工藝有興趣嗎?(小吐槽:為甚麼要最近啊= =)\n"); printf("1.有的唷>__^\n"); printf("2.才沒有呢亨ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_18(); break; case 2: personality_1_6(); break; default: mess(); break; } } void personality_1_13() { int select; printf("你認為你是個親切友善的人嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_7(); break; case 2: personality_1_19(); break; default: mess(); break; } } void personality_1_14() { int select; printf("你介意與異性朋友睡在相同一張床嗎-///-?\n"); printf("1.介...介意的唷>///<\n"); printf("2.才不介意咧哈哈\(^o^)/\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_20(); break; case 2: consequenceA(); break; default: mess(); break; } } void personality_1_15() { int select; printf("運動是你的主要課後活動嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_9(); break; case 2: personality_1_21(); break; default: mess(); break; } } void personality_1_16() { int select; printf("你對理科有興趣嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_10(); break; case 2: personality_1_22(); break; default: mess(); break; } } void personality_1_17() { int select; printf("1.橘色唷>__^\n"); printf("2.紅色唷>__^\n"); printf("請從上面兩種顏色選擇比較喜歡的一種唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_12(); break; case 2: personality_1_24(); break; default: mess(); break; } } void personality_1_18() { int select; printf("你比較喜歡山還是海洋呢?\n"); printf("1.山唷>__^\n"); printf("2.海唷>__^\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_13(); break; case 2: personality_1_25(); break; default: mess(); break; } } void personality_1_19() { int select; printf("你會忌妒比你出色的人嗎?\n"); printf("1.會的唷ˋwˊ\n"); printf("2.才不會咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_14(); break; case 2: personality_1_26(); break; default: mess(); break; } } void personality_1_20() { int select; printf("你介意在公共場所大聲講話或大笑嗎?\n"); printf("1.介意的唷(0^0)\n"); printf("2.才不介意唷>__^\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: consequenceC(); break; case 2: consequenceB(); break; default: mess(); break; } } void personality_1_21() { int select; printf("你會經常收拾你的方間嗎?\n"); printf("1.當然會的唷>__^\n"); printf("2.才不會咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_16(); break; case 2: personality_1_28(); break; default: mess(); break; } } void personality_1_22() { int select; printf("你喜歡看電視的體育節目嗎?\n"); printf("1.喜歡的唷>__^\n"); printf("2.亨才不喜歡咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_23(); break; case 2: personality_1_29(); break; default: mess(); break; } } void personality_1_23() { int select; printf("你認為純友誼在異性朋友之間存在嗎?\n"); printf("1.存在的唷>__^\n"); printf("2.不..不存在的吧O//O\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_17(); break; case 2: personality_1_10(); break; default: mess(); break; } } void personality_1_24() { int select; printf("你想學習烹飪嗎?\n"); printf("1.想的唷>__^\n"); printf("2.亨才不想咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_18(); break; case 2: personality_1_31(); break; default: mess(); break; } } void personality_1_25() { int select; printf("你對網路有興趣嗎?\n"); printf("1.有的唷>__^\n"); printf("2.亨才沒有咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_19(); break; case 2: personality_1_32(); break; default: mess(); break; } } void personality_1_26() { int select; printf("1.運動型唷>__^\n"); printf("2.成熟型唷>__^\n"); printf("請從上面選出比較喜歡的異性類型唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_20(); break; case 2: personality_1_39(); break; default: mess(); break; } } void personality_1_27() { int select; printf("你喜歡穿著名牌時裝嗎?\n"); printf("1.喜歡的唷>__^\n"); printf("2.亨才不喜歡咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: consequenceB(); break; case 2: consequenceD(); break; default: mess(); break; } } void personality_1_28() { int select; printf("你比較喜歡狗還是貓呢?\n"); printf("1.狗狗唷>__^\n"); printf("2.貓貓唷>__^\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_22(); break; case 2: personality_1_34(); break; default: mess(); break; } } void personality_1_29() { int select; printf("你通常會攜帶香水出街嗎?\n"); printf("1.會的唷>__^\n"); printf("2.才不會咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_30(); break; case 2: personality_1_35(); break; default: mess(); break; } } void personality_1_30() { int select; printf("你比較喜歡太陽還是月亮呢?\n"); printf("1.太陽唷>__^\n"); printf("2.月亮唷>__^\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_23(); break; case 2: personality_1_24(); break; default: mess(); break; } } void personality_1_31() { int select; printf("你經常改變你的髮型嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_25(); break; case 2: personality_1_37(); break; default: mess(); break; } } void personality_1_32() { int select; printf("服務其他人令你覺得忙碌嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_26(); break; case 2: personality_1_38(); break; default: mess(); break; } } void personality_1_33() { int select; printf("你通常保持整齊的頭髮嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_27(); break; case 2: consequenceC(); break; default: mess(); break; } } void personality_1_34() { int select; printf("你有烹飪恐懼症嗎?(小吐槽:這什麼莫名其妙的恐懼症= =)\n"); printf("1.有的唷Q__Q\n"); printf("2.亨才沒有咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_29(); break; case 2: personality_1_35(); break; default: mess(); break; } } void personality_1_35() { int select; printf("你是否有很多飾品呢?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_36(); break; case 2: personality_1_37(); break; default: mess(); break; } } void personality_1_36() { int select; printf("你喜歡在假期或節日期間購物嗎?\n"); printf("1.喜歡的唷>__^\n"); printf("2.亨才不喜歡咧ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_37(); break; case 2: personality_1_31(); break; default: mess(); break; } } void personality_1_37() { int select; printf("將來你希望製造雕像嗎?(小吐槽:這什麼志願啊...)\n"); printf("1.希望的唷>__^\n"); printf("2.這種東西誰會希望啊!!ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_32(); break; case 2: personality_1_38(); break; default: mess(); break; } } void personality_1_38() { int select; printf("你十分挑剔你的內褲品味嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_40(); break; case 2: personality_1_39(); break; default: mess(); break; } } void personality_1_39() { int select; printf("你對製造手工藝有興趣嗎?\n"); printf("1.有的唷>__^\n"); printf("2.亨才沒有ノ(ˋ3ˊ)ノ\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: personality_1_33(); break; case 2: personality_1_27(); break; default: mess(); break; } } void personality_1_40() { int select; printf("你是否一個追隨潮流的人呢?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: consequenceC(); break; case 2: consequenceD(); break; default: mess(); break; } } void mess() { printf("恭喜!!你是來亂型:\n不要選不存在的選項呀!\n想被埋進土裡看星星嗎?\n"); } void consequencemenu() { printf("0.回主選單\n"); printf("1.結束程式\n"); printf("請選擇你要的操作唷:"); } void consequencemenu1() { printf("0.回主選單\n"); printf("1.結束程式\n"); printf("2.回心理測驗選單\n"); printf("請選擇你要的操作唷:"); } void consequenceA() { int select; system("CLS"); printf("恭喜!!你是A型:\n你是一個外向和樂觀的人。雖然你也有挫折失\n"); printf("敗的時候,但開朗的你很快便振作起來。異性\n朋友很喜歡你親切且友善的性格,但也同時令\n"); printf("你的配偶失去安全感。不懂表達感情是你的缺\n點,但寬容跟慷慨是你受歡迎的原因。同性朋\n"); printf("友很難了解你,因為你性格天真單純,但這正\n是你吸引異性的有利條件呢!\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void consequenceB() { int select; system("CLS"); printf("恭喜!!你是B型:\n你關懷照料的性格總是令朋友們覺得你是他們的\n"); printf("大哥哥大姐姐。朋友們都很信任你,她們覺得\n與你聊天很舒服並且是一種樂趣。通常一些年紀\n"); printf("比你小而且感情脆弱的異性容易被你吸引。\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void consequenceC() { int select; system("CLS"); printf("恭喜!!你是C型:\n你是一個依賴且欠缺主見的人,因此異性朋友\n"); printf("總是覺得你是他們的小弟弟小妹妹。在四個類\n型之中,你是最適合結婚的一類。你能成功的\n"); printf("佔有配偶空閒的時間。你總希望你是眾人的集\n中點。楚楚可憐是你給異性的印象因此朋友都\n"); printf("熱心的保護你、照顧你。穿著清潔整齊的衣服\n能讓你更加受歡迎。\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void consequenceD() { int select; system("CLS"); printf("恭喜!!你是D型:\n在四個類型之中,你是最性感的一類。嫵媚迷\n"); printf("人的你很受朋友歡迎而且更是眾人的集中點呢\n!可是,朋友們往往只是寵愛你的外貌,忠告你\n"); printf("不要過分信任異性的甜言蜜語!另外,希望你\n能多表現你的智慧及主見,這樣你便能成為外在\n"); printf("及內在美兼備的人!\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void love1() { int select; system("CLS"); printf("在你的觀念中,男女分手後還能做朋友嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love2(); break; case 2: love3(); break; default: mess(); break; } } void love2() { int select; printf("當你暗戀上一個人的時候,你敢鼓起勇氣跟她告白嗎?\n"); printf("1.敢的唷\n"); printf("2.才不敢啦-/-\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love3(); break; case 2: love4(); break; default: mess(); break; } } void love3() { int select; printf("你認為在下列的戀愛模式中哪種需要付出更多的勇氣?\n"); printf("1.忘年戀唷\n"); printf("2.姐弟戀唷\n"); printf("3.異地戀唷\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love4(); break; case 2: love5(); break; case 3: love6(); break; default: mess(); break; } } void love4() { int select; printf("假如你是不幸被雙親拋棄的孤兒,你會恨父母嗎??\n"); printf("1.會的唷\n"); printf("2.應該不會吧\n"); printf("3.我也不清楚嗚嗚\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love5(); break; case 2: love7(); break; case 3: love6(); break; default: mess(); break; } } void love5() { int select; printf("男友主動向你提分手,可是不久之後要求復合,你會接受嗎?\n"); printf("1.會唷\n"); printf("2.才不會呢\n"); printf("3.看情況吧OAO\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love6(); break; case 2: love7(); break; case 3: love8(); break; default: mess(); break; } } void love6() { int select; printf("你是一個害怕孤獨的人嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love7(); break; case 2: love8(); break; default: mess(); break; } } void love7() { int select; printf("你有勇氣當一名單親爸爸/媽媽嗎?\n"); printf("1.有的唷>__^\n"); printf("2.不..沒有\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love8(); break; case 2: love9(); break; default: mess(); break; } } void love8() { int select; printf("如果異性好友約你晚上出來看流星雨,你會赴約嗎?\n"); printf("1.會的唷\n"); printf("2.才不會\n"); printf("3.看情況吧\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love9(); break; case 2: love11(); break; case 3: love10(); break; default: mess(); break; } } void love9() { int select; printf("你會為了迎合戀人的口味而改變自己的飲食習慣嗎?\n"); printf("1.會的唷\n"); printf("2.才不會\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love10(); break; case 2: love11(); break; default: mess(); break; } } void love10() { int select; printf("你覺得自己有可能成為閃婚一族嗎?\n"); printf("1.有的唷\n"); printf("2.才沒有可能的吧\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love12(); break; case 2: love11(); break; default: mess(); break; } } void love11() { int select; printf("一旦失去愛情,世界就變得不夠完整。你認同這個觀點嗎?\n"); yesnomenu(); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love12(); break; case 2: love13(); break; default: mess(); break; } } void love12() { int select; printf("相對來說你更不能忍受戀人的哪種暴力行為?\n"); printf("1.熱暴力唷(身體上的攻擊行為)\n"); printf("2.冷暴力唷(言語上的攻擊行為)\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love13(); break; case 2: love14(); break; default: mess(); break; } } void love13() { int select; printf("你認為自己會是站在成功的戀人後面的人嗎?\n"); printf("1.當然會的唷\n"); printf("2.應該不會吧\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love15(); break; case 2: love14(); break; default: mess(); break; } } void love14() { int select; printf("別人對你的批評會讓你長時間趕到不開心嗎?\n"); printf("1.會的嗚嗚QQ\n"); printf("2.才不會咧誰管她們呀呸呸\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: love16(); break; case 2: love15(); break; default: mess(); break; } } void love15() { int select; printf("假如你的另一半有隨地吐痰的壞習慣,你最有可能怎麼辦?\n"); printf("1.立刻跟他/她分手(太兇了吧= =)\n"); printf("2.屢教不改就分手\n"); printf("3.努力幫他改掉這個壞習慣\n"); printf("4.睜一隻眼閉一隻眼\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: loveconsequenceB(); break; case 2: love17(); break; case 3: love18(); break; case 4: love16(); break; default: mess(); break; } } void love16() { int select; printf("如果有不喜歡的異性用盡浪漫手段追你,你會答應跟他/她在一起嗎?\n"); printf("1.會的唷\n"); printf("2.才不會的呢\n"); printf("3.看情況吧\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: loveconsequenceC(); break; case 2: love18(); break; case 3: love17(); break; default: mess(); break; } } void love17() { int select; printf("你能忍受自己的另一半偶爾因為應酬而夜歸嗎?\n"); printf("1.可以的\n"); printf("2.不行的吧\n"); printf("3.我也不清楚耶\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: loveconsequenceE(); break; case 2: loveconsequenceD(); break; default: love18(); break; } } void love18() { int select; printf("假如剛認識不久的異性約你去做下列其中一件事,你更願意參加哪一項\n"); printf("1.看電影\n"); printf("2.打球\n"); printf("3.聽音樂會\n"); printf("請輸入相對應的數字唷^___^:"); scanf_s("%d",&select); switch(select) { case 1: loveconsequenceA(); break; case 2: loveconsequenceG(); break; case 3: loveconsequenceF(); break; default: mess(); break; } } void loveconsequenceA() { int select; system("CLS"); printf("你喜歡的人是溫柔型!!:\n你對愛情有著完美的期待,心目中的另一半人選\n"); printf("必定要帶著溫柔的氣息。對你來說,那種具有\n柔和的眼神,講話平緩有條理,尊重異性的溫柔\n"); printf("的人最難抗拒。而且,你比較容易相信別人,\n在交朋友的時候輕易就會被別人的外表所矇騙,\n"); printf("記得要帶眼識人唷!\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void loveconsequenceB() { int select; system("CLS"); printf("你喜歡的人是斯文型!!:\n你看人有著比較嚴格的要求,特別關注在細節\n"); printf("上別人的行為舉止。與異性交往的過程中,你\n會不由自主的去注意那些文質彬彬,談吐溫文爾\n"); printf("雅的斯文人。當然,假如你遇上一個像痞子一\n樣的人,你是無論如何都不會愛上她的。\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void loveconsequenceC() { int select; system("CLS"); printf("你喜歡的人是花心型!!:\n你比較關注自己在別人眼裡的形象,喜歡聽到\n"); printf("別人的讚美,深怕被討厭。一旦你遇到滿嘴甜\n言蜜語的人時,只能棄械投降。因此,你很容易\n"); printf("碰上花心的人最後獨自傷心。其實,如果你不\n是那麼介意別人的看法,你對花言巧語的鑑別力\n"); printf("也會提高。\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void loveconsequenceD() { int select; system("CLS"); printf("你喜歡的人是宅宅型!!:\n你的內心充滿不安感,對外面的世界和人都帶\n"); printf("有不被察覺的懷疑。敏感的你經常需要別人的\n關注和陪伴,因此你特別鍾情顧家的人。整天待\n"); printf("在家裡的宅宅活動範圍小,恰好能讓你感到非\n常放心。不過,狹小的活動空間可能讓你感到無\n"); printf("聊,假如要選宅宅當你的另一半,就一定要考\n慮清楚你們的生活習慣一不一樣唷!\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void loveconsequenceE() { int select; system("CLS"); printf("你喜歡的人是事業型!!:\n你希望能夠過上安定的生活,家庭責任感較重\n"); printf(",是相夫教子的好材料。你把自己在事業上的\n目標投射在另一半身上,那種以事業為重,努力\n"); printf("拼搏的人最能得到你的青睞。不過,即使是工\n作第一也要顧及家人的感受唷!\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void loveconsequenceF() { int select; system("CLS"); printf("你喜歡的人是尊貴型!!:\n你追求生活的品質,不只自己,也希望另一半\n"); printf("同樣具有尊貴的氣質。普通的市井小民無法勾\n起你的興趣,只有那種渾身充滿王者氣派的人才\n"); printf("能立即擊中你的心。不過,符合你理想的人可\n遇不可求,不妨選一位有潛力的人,並且幫助他\n"); printf("成為你理想中的人!\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void loveconsequenceG() { int select; system("CLS"); printf("你喜歡的人是陽光型!!:\n你活潑好動心中似乎藏著很多話想跟大家分享\n"); printf("。在與異性接觸的過程中,你希望獲得更多的\n話題和交流,那種充滿陽光氣息的人會讓你感到\n"); printf("非常投緣,假如他是運動愛好者,那麼你對他\n的傾慕更是增添不少。當然,這種人可是搶手貨\n"); printf(",時機到了要好好把握唷!\n"); consequencemenu(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); default: mess(); break; } } void mental1() { char select; printf("假如你向森林深處走去,你覺得你會遇到甚麼呢?\n"); printf("A.人\n"); printf("B.動物\n"); printf("C.土人\n"); printf("D.仙女\n"); printf("請選取相對應的選項唷>___^(英文字母):"); scanf_s("%c",&select); switch(select) { case 'A': case 'a': mentalconsequenceA1(); break; case 'B': case 'b': mentalconsequenceB1(); break; case 'C': case 'c': mentalconsequenceC1(); break; case 'D': case 'd': mentalconsequenceD1(); break; default: system("CLS"); printf("請確實選擇有效字母選項!\n"); mental1(); break; } } void mentalconsequenceA1() { int select; system("CLS"); printf("你是個堅守常規的人,你不會做有損倫理的事\n情,更不會發生不倫之戀。你也會要求你的戀人\n"); printf("對你從一而終,所以戀愛中的你是是個心胸異\n常狹窄的人。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mentalconsequenceD1() { int select; system("CLS"); printf("隨然你沉溺在完全自我的世界裡,但這也是你\n的魅力所在,你也意識到自己這一特長,所以\n"); printf("也引以為傲,因此你絕不會與性格相異的人交\n往,對戀人的要求也非常嚴格。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mentalconsequenceC1() { int select; system("CLS"); printf("你善與人交往,有令人對你一見鍾情的魅力,\n戀愛的經驗也不少。你對戀人的寬容,其實是你\n"); printf("視體驗不同性格的人的一種挑戰。這種戀愛心\n理,似乎有些或於自信和驕傲,小心誤人誤己。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mentalconsequenceB1() { int select; system("CLS"); printf("你是個不愛發脾氣的人,所以容易相處。你喜\n歡的戀愛方式是經過時間累積而逐漸醞釀出來\n"); printf("的感情。你能包容戀人的一切,即使對方做錯\n了事,你也會忍氣吞聲。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mental2() { char select; printf("有天你走在路上突然看見地上有錢,可是周圍有兩三個人,不好意思去撿\n此時你認為地上要掉多少錢你才會彎下去撿呢?\n"); printf("A.1~10\n"); printf("B.10~100\n"); printf("C.100~1000\n"); printf("D.1000~\n"); printf("E.多少都不撿\n"); printf("請選取相對應的選項唷>___^(英文字母):"); scanf_s(" %c",&select); switch(select) { case 'A': case 'a': mentalconsequenceA2(); break; case 'B': case 'b': mentalconsequenceB2(); break; case 'C': case 'c': mentalconsequenceC2(); break; case 'D': case 'd': mentalconsequenceD2(); break; case 'E': case 'e': mentalconsequenceE2(); break; default: system("CLS"); printf("請確實選擇有效字母選項!\n"); mental1(); break; } } void mentalconsequenceA2() { int select; system("CLS"); printf("你一點也不在意別人怎麼說怎麼看,完全只相\n信自己的感覺和判斷,你一旦上了可能很快就\n"); printf("會跳入婚姻當中,你可能二十出頭就結婚了。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mentalconsequenceB2() { int select; system("CLS"); printf("你是一個踏實的人,你的眼光不會很高,也不\n會有不切實際的幻想,這樣的你大概會在二十\n"); printf("五歲結婚。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mentalconsequenceC2() { int select; system("CLS"); printf("你很有自己的想法,卻也很在乎世俗的眼光,\n你的結婚年齡大概在二十五到三十之間。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mentalconsequenceD2() { int select; system("CLS"); printf("你眼光很高,或者說你寧缺毋濫,一定要找到\n一個和自己各方面都契合的對象才會考慮結婚\n"); printf(",你結婚可能在三十到三十五歲之間。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } } void mentalconsequenceE2() { int select; system("CLS"); printf("你是一個非常忠於自己的人,絕對不會因外在\n因素而破壞自己的原則,你結婚也許在三十五\n"); printf("歲後。當然,也有可能永遠當個快樂單身貴族\n。\n"); consequencemenu1(); scanf_s("%d",&select); switch (select) { case 0: break; case 1: exit(0); case 2: submenu_mental(); break; default: mess(); break; } }
void mainmenu(); void submenu_mental(); void yesnomenu(); void personality_1_1(); void personality_1_2(); void personality_1_3(); void personality_1_4(); void personality_1_5(); void personality_1_6(); void personality_1_7(); void personality_1_8(); void personality_1_9(); void personality_1_10(); void personality_1_11(); void personality_1_12(); void personality_1_13(); void personality_1_14(); void personality_1_15(); void personality_1_16(); void personality_1_17(); void personality_1_18(); void personality_1_19(); void personality_1_20(); void personality_1_21(); void personality_1_22(); void personality_1_23(); void personality_1_24(); void personality_1_25(); void personality_1_26(); void personality_1_27(); void personality_1_28(); void personality_1_29(); void personality_1_30(); void personality_1_31(); void personality_1_32(); void personality_1_33(); void personality_1_34(); void personality_1_35(); void personality_1_36(); void personality_1_37(); void personality_1_38(); void personality_1_39(); void personality_1_40(); void mess(); void consequencemenu(); void consequencemenu1(); void consequenceA(); void consequenceB(); void consequenceC(); void consequenceD(); void love1(); void love2(); void love3(); void love4(); void love5(); void love6(); void love7(); void love8(); void love9(); void love10(); void love11(); void love12(); void love13(); void love14(); void love15(); void love16(); void love17(); void love18(); void loveconsequenceA(); void loveconsequenceB(); void loveconsequenceC(); void loveconsequenceD(); void loveconsequenceE(); void loveconsequenceF(); void loveconsequenceG(); void mental1(); void mental2(); void mentalconsequenceA1(); void mentalconsequenceB1(); void mentalconsequenceC1(); void mentalconsequenceD1(); void mentalconsequenceA2(); void mentalconsequenceB2(); void mentalconsequenceC2(); void mentalconsequenceD2(); void mentalconsequenceE2();
[專題] 第一組 - 遊戲設計
第一組
標頭檔
//以下是快手輸字母的函式定義
void printmenu();
void input();
void guess1();
void outside();
//以下是猜數字的函式定義
struct data
{
int guess;
int A;
int B;
};
typedef struct data D;
int run();
void guess1();
void compare();
void printData();
void compu();
void dot();
//以下是點點逃走中的函式庫/定義
#define M 10
void dot();
void move(int input,int kind);
void buildTable();
int chooseLevel();
int check();
void menu();
void randMove();
void print(int count, int level);
void randgive();
void gameover(int count);
#include#include #include"遊戲目錄func.h" int main() { int select; while(1) { system("CLS"); printmenu(); scanf_s("%d",&select); if (select == 0) { return 0; } switch(select) { case 1: { input(); break; } case 2: { guess1(); break; } case 3: { dot(); break; } default: { printf("輸入錯誤! 請按Enter再次輸入!\n"); break; } } } system("pause"); }
#include#include #include #include #include"遊戲目錄func.h" int i; int guess,ans,a,b,c,d,e,f,g,h; D data[10]; void printmenu()//輸出主畫面選項 { printf("===============Mainmenu===============\n"); printf("\n"); printf("1. 快手輸字母\n"); printf("\n"); printf("2. 猜數字\n"); printf("\n"); printf("3. 點點逃跑中\n"); printf("\n"); printf("0. 離開程式\n"); printf("\n"); printf("======================================\n"); printf("\n"); printf("請輸入代號: "); } void input()//遊戲1.快手輸字母 { int t; int i,score,a,count,n; system("CLS"); printf("這是一個考驗你手腦協調的小遊戲.\n"); printf("\n"); printf("遊戲規則:\n"); printf("\n"); printf("畫面中會隨機出現英文字母\n"); printf("\n"); printf("請你照著畫面上的英文字母輸入\n"); printf("\n"); printf("大小寫都可以喔!\n"); printf("\n"); printf("速度越快,分數越高!\n"); printf("\n"); printf("我們會計算你的正確率,並且記錄你的分數\n"); printf("\n"); printf("準備好了嗎?我們開始吧!\n"); printf("\n"); system("pause"); system("CLS"); //刷新畫面 printf("可以自己選擇要玩多久喔!想玩多久呢?\n"); printf("\n"); printf("(輸入0回主選單)\n"); printf("\n"); printf("你想挑戰幾秒: "); scanf_s("%d",&n); //輸入挑戰時間,若輸入0則離開遊戲 if (n == 0) { return; } system("CLS"); //刷新畫面 printf("請按ENTER開始遊戲\n"); printf("\n"); //給玩家準備時間 system("pause"); t=time(NULL); score=0; count=0; while(time(NULL)-t < n)//當時間未到,遊戲不會結束 { system("CLS"); printf("剩餘時間: %d\n",n-time(NULL)+t); printf("\n"); printf("分數: %d\n",score); printf("\n"); printf("你已經輸入%d次了\n",count); printf("\n"); i=(rand()%25)+65; printf("%c",i); a=_getch(); if(a==i||a==i+32)//設定答案為無論大小寫都可以接受 { score++; } count++; } system("CLS"); //刷新螢幕 printf("\n"); printf("GAME OVER!\n\n"); printf("\n"); printf("成績: %d\n",score); printf("\n"); printf("答題正確率:%3.1f %%\n",(float)score/count*100); printf("\n"); system("pause"); } void guess1()//猜數字遊戲說明 { int select; int ans; int a; int b; int c; int d; while(1) { system("CLS"); //刷新螢幕 printf("遊戲規則:\n"); printf("\n"); printf("接下來會由外界輸入或隨機產生4個數字\n"); printf("\n"); printf("玩家必須猜出是哪四位數字才能勝出\n"); printf("\n"); printf("而遊戲中也會給予玩家提示\n"); printf("\n"); printf("當玩家猜測的數字與位置均正確時\n"); printf("\n"); printf("系統會記錄為A\n"); printf("\n"); printf("當玩家猜測的數字正確,但位置錯誤時\n"); printf("\n"); printf("系統會記錄為B\n"); printf("\n"); printf("例如:答案是1234,若玩家輸入答案1678,則因第一位數字猜對,其他均錯,記錄為1A0b\n"); printf("\n"); printf("若玩家輸入6178,則記錄為0A1B\n"); printf("\n"); printf("得到4A(答案全對)即通關\n"); printf("\n"); system("pause"); system("CLS"); printf("請選擇答案來源:\n"); printf("\n"); printf("1.答案由外界輸入\n"); printf("\n"); printf("2.答案由電腦產生\n"); printf("\n"); printf("0.回主選單\n"); scanf_s("%d",&select); if (select == 0) { break; } if(select!=1&&select!=2) { printf("輸入錯誤! 請重新輸入!\n"); printf("\n"); system("pause"); } else { switch(select) { case 1: system("CLS"); //刷新螢幕 printf("你選擇了答案由外界輸入!\n"); outside(); break; case 2: system("CLS"); //刷新螢幕 printf("你選擇了答案由電腦產生!\n"); compu(); break; default: printf("不好意思,輸入錯誤!\n"); break; } } } system("pause"); } void outside()//從外界輸入數字 { i=0; ans=0; guess=99999; while(1) { printf("請輸入4個0~9的相異數字作為答案: "); printf("\n"); scanf_s("%d",&ans); d=ans%10; c=((ans-d)/10)%10; b=((ans-d-10*c)/100)%10; a=((ans-d-10*c-100*b)/1000)%10; if(ans!=1000*a+100*b+10*c+d||a==b||a==c||a==d||b==c||b==d||c==d) printf("輸入錯誤! 請重新輸入!\n"); else break; } system("CLS"); while(i < 10&&guess!=ans) { run(); } if(guess==ans) { printf("\n"); printf("Bingo!!!!!!!\n"); printf("\n"); system("pause"); } else { printf("\n"); printf("GAME OVER!!!!\n"); printf("\n"); system("pause"); } } void compu()//由電腦產生數字 { i=0; ans=0; guess=99999; while(a==b||a==c||a==d||b==c||b==d||c==d) { a=rand()%10; b=rand()%10; c=rand()%10; d=rand()%10; ans=a*1000+b*100+c*10+d; } while(i < 10&&guess!=ans) { run(); } if(guess==ans) { printf("\n"); printf("Bingo!!!!!!!\n"); system("pause"); } else { printf("\n"); printf("GAME OVER!!!!\n"); system("pause"); } } int run()//遊戲主程式 { while(1) { printf("請輸入猜測: "); scanf_s("%d",&guess); if(a==b||a==c||a==d||b==c||b==d||c==d) { printf("\n"); printf("4數字需相異! 請重新輸入!\n"); break; } else { data[i].guess=guess; h=guess%10; g=((guess-h)/10)%10; f=((guess-h-10*g)/100)%10; e=((guess-h-10*g-100*f)/1000); compare(); system("CLS"); //刷新螢幕 printData(); i++; return i; } } } void compare()//比較答案是A還是B { data[i].A=0; data[i].B=0; if (a == e) { (data[i].A) += 1; } if (b == f) { (data[i].A) += 1; } if (c == g) { (data[i].A) += 1; } if (d == h) { (data[i].A) += 1; } if (e == b || e == c || e == d) { data[i].B += 1; } if (f == a || f == c || f == d) { data[i].B += 1; } if (g == a || g == b || g == d) { data[i].B += 1; } if (h == a || h == b || h == c) { data[i].B += 1; } } void printData()//印出猜測記錄 { int k; printf("%4s%7s%7s\n","No.","guess","AB"); for(k=0;k < =i;k++) { printf("%4d%7d%4dA%dB\n",k+1,data[k].guess,data[k].A,data[k].B); } printf("\n"); } void dot()//點點逃走中程式本體 { int input,level,enemy,count; while(1) { buildTable(); menu(); level=chooseLevel(); count = 0; if(level==0) { break; } randgive(); while(1) { system("CLS"); //刷新螢幕 print(count,level); input=_getch(); input=_getch(); move(input,1); randMove(); count++; if (count%level == 0) { randgive(); } system("CLS"); //刷新螢幕 print(count,level); if (check() == 1) { printf("\n"); printf("\n可惜!被敵人抓到了!\n"); system("pause"); break; } } system("CLS"); //刷新螢幕 gameover(count); } } int row,col; int table[M][M]; void menu()//點點逃走中主程式 { system("CLS"); printf("\n"); printf("遊戲說明\n"); printf("\n"); printf("玩家將扮演一顆黑色的點點\n"); printf("\n"); printf("目標是躲過四處移動的白色點點\n"); printf("\n"); printf("逃得越久,分數越高!\n"); printf("\n"); printf("操作方式:\n"); printf("\n"); printf("鍵盤輸入上下左右,連點兩下空白鍵可以停止不動一回合\n"); printf("\n"); system("pause"); system("CLS"); printf("難度選擇:\n"); printf("\n"); printf("1.簡單 10回合出現一個新敵人\n"); printf("\n"); printf("2.普通 7回合出現一個新敵人\n"); printf("\n"); printf("3.困難 5回合出現一個新敵人\n"); printf("\n"); printf("4.地獄 3回合出現一個新敵人\n"); printf("\n"); printf("輸入0回主選單\n"); } int chooseLevel()//選擇關卡難度 { int level; scanf_s("%d",&level); if(level==0) //輸入0回主選單 { printf("回主選單\n"); system("pause"); return 0; } switch(level) { case 1: { return 10; //若選擇1 則10回合出現一次敵人 } case 2: { return 7; //若選擇2 則7回合出現一次敵人 } case 3: { return 5; //若選擇3 則5回合出現一次敵人 } case 4: { return 3; //若選擇4 則3回合出現一次敵人 } default: { printf("\n"); printf("輸入錯誤\n"); system("pause"); return 0; } } } void buildTable()//建立遊戲平台 { for(row=0;row < M;row++) { for(col=0;col < M;col++) { table[row][col]=0; //歸0遊戲平台 } } table[0][0]=1; //建立初始點點(玩家)在遊戲平台上 } void move(int input,int kind)//玩家的點點移動 { int temp[M][M]; for(row=0;row < M;row++) { for(col=0;col < M;col++) { temp[row][col]=table[row][col]; //先建立一個暫存,讓程式可以比對移動前跟移動後 } } switch(input) { /*getch()抓到的上下左右分別是 上:72 下:80 左:75 右:77 故做4個CASE 若輸入其他數字/按空白鍵則無作為 */ case 72: for(row=0;row < M;row++) { for(col=0;col < M;col++) { if(table[row][col]==kind) { if(row==0) { if (temp[M - 1][col] == 2) /* 若移動目標向上會跨過邊界則設定 移動後目標位置為總行數-1 */ { table[row][col] = 3; //若移動方向已經有點點,則移動後變更玩家為X } temp[M-1][col]=table[row][col]; temp[row][col]=0; //若沒有問題便交換點點的位置 } else { if (temp[row - 1][col] == 2) { table[row][col] = 3; //若移動方向已有敵人,則變更玩家為X } temp[row-1][col]=table[row][col]; temp[row][col]=0; //若沒有問題便交換點點的位置 } } } } for(row=0;row < M;row++) { for(col=0;col < M;col++) { table[row][col]=temp[row][col]; } } break; case 80: for(row=0;row < M;row++) { for(col=0;col < M;col++) { if(table[row][col]==kind) { if(row==M-1) { /* 若移動目標向下會跨過邊界則設定 移動後目標位置為0 */ if (temp[0][col] == 2) { table[row][col] = 3; //若移動方向已經有點點,則移動後變更玩家為X } temp[0][col]=table[M-1][col]; temp[M-1][col]=0; //若沒有問題便交換點點的位置 } else { if (temp[row + 1][col] == 2) { table[row][col] = 3; //若移動方向已經有點點,則移動後變更玩家為X } temp[row+1][col]=table[row][col]; temp[row][col]=0; //若沒有問題便交換點點的位置 } } } } for(row=0;row < M;row++) { for(col=0;col < M;col++) { table[row][col]=temp[row][col]; } } break; case 75: for(row=0;row < M;row++) { for(col=0;col < M;col++) { if(table[row][col]==kind) { if(col==0) { /* 若移動目標向左會跨過邊界則設定 移動後目標位置為總行數-1 */ if (temp[row][M - 1] == 2) { table[row][col] = 3; //若移動方向已經有點點,則移動後變更玩家為X } temp[row][M-1]=table[row][col]; temp[row][col]=0; //若沒有問題便交換點點的位置 } else { if (temp[row][col - 1] == 2) { table[row][col] = 3; //若移動方向已經有點點,則移動後變更玩家為X } temp[row][col-1]=table[row][col]; temp[row][col]=0; //若沒有問題便交換點點的位置 } } } } for(row=0;row < M;row++) { for(col=0;col < M;col++) { table[row][col]=temp[row][col]; } } break; case 77: for(row=0;row < M;row++) { for(col=0;col < M;col++) { if(table[row][col]==kind) { if(col==M-1) { /* 若移動目標向右會跨過邊界則設定 移動後目標位置為0 */ if (temp[row][0] == 2) { table[row][col] = 3; //若移動方向已經有點點,則移動後變更玩家為X } temp[row][0]=table[row][col]; temp[row][col]=0; //若沒有問題便交換點點的位置 } else { if (temp[row][col + 1] == 2) { table[row][col] = 3; //若移動方向已經有點點,則移動後變更玩家為X } temp[row][col+1]=table[row][col]; temp[row][col]=0; //若沒有問題便交換點點的位置 } } } } for(row=0;row < M;row++) { for(col=0;col < M;col++) { table[row][col]=temp[row][col]; } } break; } } int check()//檢察遊戲是否結束 { for (row = 0; row < M; row++) { for (col = 0; col < M; col++) { if (table[row][col] == 1) return 0; /* 如果遊戲平台上有玩家角色(沒有變成X) 則遊戲繼續 */ } } return 1; /* 如果遊戲平台上沒有玩家角色(已經變成X了) 則遊戲繼續 */ } void randgive() { while (1) { row = rand() % 8; col = rand() % 8; if (table[row][col] ==0) /* 當隨機選到的目標是空格時 可以填入敵人 */ { table[row][col] = 2; //填入敵人 break; } } } void randMove()//隨機移動敵人 { int enemy; int temp[M][M]; //先把整個遊戲平台複製一份暫存 方便比對用 for (int k = 0; k < M; k++) { for (int t = 0; t < M; t++) { temp[k][t] = table[k][t]; } } for(int i=0;i < M;i++) { for(int j=0;j < M;j++) { /* 如果某個敵人曾經移動過 則存取為21 這是為了方便分辨移動前與移動後 若暫存的位置與遊戲平台的位置一樣是移動前的敵人 則敵人開始移動 */ if (temp[i][j] == 2 && table[i][j]==2) { switch (rand() % 4) { case 0: //向上移動 { if (i == 0)//若敵人在第一排,則移動到最下面一排 { if (table[M - 1][j] != 2 && table[M - 1][j] != 21)//先檢查最下面一排有沒有其他敵人,如果有則不移動 { if (table[M - 1][j] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[M - 1][j] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[M - 1][j] = 21; table[i][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } else//若敵人不在第一排,則直接向上移動 { if (table[i - 1][j] != 2 && table[i - 1][j] != 21)//先檢查上面一排有沒有其他敵人,如果有則不移動 { if (table[i - 1][j] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[i - 1][j] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[i - 1][j] = 21; table[i][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } break; } case 1: { if (i == M - 1)//若敵人在最下面一排,則移動到第一排 { if (table[0][j] != 2 && table[0][j] != 21)//先檢查最上面一排有沒有其他敵人,如果有則不移動 { if (table[0][j] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[0][j] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[0][j] = 21; table[M - 1][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } else { if (table[i + 1][j] != 2 && table[i + 1][j] != 21)//先檢查下面一排有沒有其他敵人,如果有則不移動 { if (table[i + 1][j] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[i + 1][j] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[i + 1][j] = 21; table[i][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } break; } case 2: { if (j == 0)//若敵人在第一列,則移動到最右邊一列 { if (table[i][M - 1] != 2 && table[i][M - 1] != 21)//先檢查最右邊一列有沒有其他敵人,如果有則不移動 { if (table[i][M - 1] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[i][M - 1] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[i][M - 1] = 21; table[i][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } else { if (table[i][j - 1] != 2 && table[i][j - 1] != 21)//先檢查左邊一列有沒有其他敵人,如果有則不移動 { if (table[i][j - 1] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[i][j - 1] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[i][j - 1] = 21; table[i][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } break; } case 3: { if (j == M - 1)//若敵人在最後一列,則移動到第一列 { if (table[i][0] != 2 && table[i][0] != 21)//先檢查最右邊一列有沒有其他敵人,如果有則不移動 { if (table[i][0] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[i][0] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[i][0] = 21; table[i][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } else { if (table[i][j + 1] != 2 && table[i][j + 1] != 21)//先檢查左邊一列有沒有其他敵人,如果有則不移動 { if (table[i][j + 1] == 1) { //如果該位置有玩家,則宣告玩家死亡(用X取代玩家) table[i][j + 1] = 3; table[i][j] = 0; } else { //如果沒有玩家,則直接互換(存取為移動後) table[i][j + 1] = 21; table[i][j] = 0; } } else//如果沒有移動,則直接設定為移動後 { table[i][j] = 21; } } break; } case 4: //點點不移動 { //直接設定點點為"移動後",以免程式判斷錯誤 table[i][j] = 21; } } } } } for (int k = 0; k < M; k++) { for (int t = 0; t < M; t++) { if (table[k][t] == 21) { table[k][t] = 2; } } } } void print(int count,int level)//印出遊戲平台 { printf("______________________\n"); for(row=0;row < M;row++) { printf("|"); for(col=0;col < M;col++) { if(table[row][col]==0) printf(" "); else if(table[row][col]==1) printf("○"); else if (table[row][col] == 2) printf("●"); else if(table[row][col]==3) printf("X"); } printf("|\n"); } printf("______________________\n"); printf("\n"); printf("你現在的分數是:%d\n,距離下一個敵人出現還有%d次\n",count,level-1-((count-1)%level)); } void gameover(int count)//遊戲結束 { printf("\n"); printf("遊戲結束!\n"); printf("\n"); printf("你一共得了%d分!玩得還開心嗎? 再來一次吧!\n",count); printf("\n"); system("pause"); }
2015年1月14日 星期三
[專題] 第四組 - 小遊戲設計
執行檔
PPT
firth.mainmenu.cpp
firth.project.h
firth.everyoneproject.cpp
PPT
firth.mainmenu.cpp
#include#include #include "project.h" int main() { int select; do { system("CLS"); printf("==========期末專題小遊戲==========\n"); printf("== ==\n"); printf("== 0.離開遊戲 ==\n"); printf("== 1.簡易拉霸遊戲 ==\n"); printf("== 2.洗牌比大小 ==\n"); printf("== 3.猜數字遊戲 ==\n"); printf("== ==\n"); printf("==================================\n"); printf("請輸入選項:\n"); scanf("%d",&select); if(select==0) { printf("離開遊戲~\n"); system("pause"); break; } switch(select) { case 1: stu1(); break; case 2: system("CLS"); stu2(); break; case 3: stu3(); break; default: printf("輸入錯誤!\n"); break; } system("pause"); }while(1); }
firth.project.h
void stu1(); void stu2(); void stu3(); void GNGMenu(); void GNGintro(); int GNGstart(); void menu(); //選單之函數 void prepare(); //準備工作之函數 void ask(); //電腦問之函數 void answer(); //回答幾a幾b之函數 void think(); //電腦思考之函數(其實就是從答案庫中排除不可能的答案)
firth.everyoneproject.cpp
#include#include #include #include #include "project.h" #include void stu1() { int n1,n2,n3,n4,n5,n6,n7,n8,n9; int d1,d2,d3,d4,d5,d6,d7,d8,d9; char c1,c2,c3,c4,c5,c6,c7,c8,c9; char c01,c02,c03,c04,c05,c06; char k1,k2,k3,k4,k5,k6,k7,k8,k9; char s1,s2,s3,s4,s5,s6,s7,s8,s9; int a,b,c; int i,j=0,k=0; int q=0; int count,score=0,line=0,coin; do { system("CLS"); printf("☆★☆★☆ 拉霸遊戲機 ★☆★☆★☆\n"); printf("☆ ☆\n"); printf("★ ★\n"); printf("☆ ☆\n"); printf("★ ★\n"); printf("☆ 1.遊戲說明 ☆\n"); printf("★ ★\n"); printf("☆ 2.開始遊戲 ☆\n"); printf("★ ★\n"); printf("☆ 3.離開遊戲 ☆\n"); printf("★ ★\n"); printf("☆★☆★☆★☆★☆★☆★☆★☆★☆\n"); printf("⊙請輸入代號:"); scanf("%d",&a); if(a==3) { printf("exit the gmae!\n"); break; } switch(a) { case 1: system("cls"); printf("⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); printf("⊙ 遊 戲 說 明 ⊙\n"); printf("⊙ ⊙\n"); printf("⊙ 每局先輸入一筆錢數當壓金,接 ⊙\n"); printf("⊙ 著選擇拉桿開始遊戲,只要直橫或斜 ⊙\n"); printf("⊙ 的圖案相同,都算是一條連線! ⊙\n"); printf("⊙ ⊙\n"); printf("⊙ 所以得到的金錢總數為每條線 ⊙\n"); printf("⊙ 的(圖案倍數 x 壓金)相加之和! ⊙\n"); printf("⊙ ⊙\n"); printf("⊙ ⊙\n"); printf("⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); printf(" \n"); system("pause"); break; case 2: system("cls"); srand(time(NULL)); printf("☆☆☆ 遊 戲 設 定 ☆☆☆\n"); printf(" \n"); for(j=0;j<1;) { printf("◎請輸入您的初始錢數(1000~10000):"); scanf("%d",&coin); if(coin>=10001) { system("cls"); printf("您輸入的初始金錢數太多,請重新輸入!\n"); } else if(coin<=999) { system("cls"); printf("您輸入的初始金錢數太少,請重新輸入!\n"); } else break; } system("cls"); s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0,s9=0; c1=2,c2=3,c3=1,c4=6,c5=1,c6=4,c7=2,c8=3,c9=5; for(count=1;count>0;count++) { c01=1; c02=2; c03=3; c04=4; c05=5; c06=6; for(i=0;i<8;i++) { n1=rand()%(6)+1; n2=rand()%(6)+1; n3=rand()%(6)+1; n4=rand()%(6)+1; n5=rand()%(6)+1; n6=rand()%(6)+1; n7=rand()%(6)+1; n8=rand()%(6)+1; n9=rand()%(6)+1; k1=n1,k2=n2,k3=n3,k4=n4,k5=n5,k6=n6,k7=n7,k8=n8,k9=n9; printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■ 遊戲進行中... ■\n"); printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■ ■ ■ ■ 錢數表 ■\n"); printf("■ %c ■ %c ■ %c ■ (每線) ■\n",k1,k2,k3); printf("■ ■ ■ ■ ■\n"); printf("■■■■■■■■■■■■■ %c=1.5倍 ■\n",c01); printf("■ ■ ■ ■ %c=2倍 ■\n",c02); printf("■ %c ■ %c ■ %c ■ %c=2.5倍 ■\n",k4,k5,k6,c03); printf("■ ■ ■ ■ %c=3倍 ■\n",c04); printf("■■■■■■■■■■■■■ %c=3.5倍 ■\n",c05); printf("■ ■ ■ ■ %c=4倍 ■\n",c06); printf("■ %c ■ %c ■ %c ■ ■\n",k7,k8,k9); printf("■ ■ ■ ■ ■\n"); printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■局數|%4d■錢|%7d■分數|%6d■\n",count,coin,score); printf("■■■■■■■■■■■■■■■■■■■\n"); Sleep(250); system("cls"); } if(coin<=0) { printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■ 您的錢數已為零! ■\n"); printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■ G A M E O V E R ■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■ ■\n"); printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■局數|%4d■錢|%7d■分數|%6d■\n",count,coin,score); printf("■■■■■■■■■■■■■■■■■■■\n"); printf(" \n"); system("pause"); break; } printf("■■■■■■■■■■■■■■■■■■■\n"); if(line==0) printf("■ 真可惜,槓龜! ■\n"); else printf("■ 恭喜你,中了%d連線! ■\n",line); printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ 錢數表 ■\n",s1,s1,s1,s2,s2,s2,s3,s3,s3); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ (每線) ■\n",s1,c1,s1,s2,c2,s2,s3,c3,s3); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ ■\n",s1,s1,s1,s2,s2,s2,s3,s3,s3); printf("■■■■■■■■■■■■■ %c=1.5倍 ■\n",c01); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ %c=2倍 ■\n",s4,s4,s4,s5,s5,s5,s6,s6,s6,c02); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ %c=2.5倍 ■\n",s4,c4,s4,s5,c5,s5,s6,c6,s6,c03); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ %c=3倍 ■\n",s4,s4,s4,s5,s5,s5,s6,s6,s6,c04); printf("■■■■■■■■■■■■■ %c=3.5倍 ■\n",c05); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ %c=4倍 ■\n",s7,s7,s7,s8,s8,s8,s9,s9,s9,c06); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ ■\n",s7,c7,s7,s8,c8,s8,s9,c9,s9); printf("■%c %c %c ■%c %c %c ■%c %c %c ■ ■\n",s7,s7,s7,s8,s8,s8,s9,s9,s9); printf("■■■■■■■■■■■■■■■■■■■\n"); printf("■局數|%4d■錢|%7d■分數|%6d■\n",count,coin,score); printf("■■■■■■■■■■■■■■■■■■■\n"); printf(" \n"); for(k=0;k<1;) { printf("☆請輸入您的壓錢數(100~5000):\n"); scanf("%d",&b); if(b>=5001) printf("您輸入的壓金數太多,請重新輸入!\n"); else if(b<=99) printf("您輸入的壓金數太少,請重新輸入!\n"); else { coin=coin-b; break; } } printf("☆拉桿進行遊戲? (1)確定 (2)取消\n"); scanf("%d",&c); system("cls"); switch(c) { case 1: q=0; n1=rand()%(6)+1; n2=rand()%(6)+1; n3=rand()%(6)+1; n4=rand()%(6)+1; n5=rand()%(6)+1; n6=rand()%(6)+1; n7=rand()%(6)+1; n8=rand()%(6)+1; n9=rand()%(6)+1; c1=n1; c2=n2; c3=n3; c4=n4; c5=n5; c6=n6; c7=n7; c8=n8; c9=n9; s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0,s9=0; d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0,d8=0,d9=0; line=0; if((n1==n2)&&(n2==n3)) { d1++; d2++; d3++; line++; if(n1==1) { coin=coin+b*3/2; score=score+10; } if(n1==2) { coin=coin+b*2; score=score+15; } if(n1==3) { coin=coin+b*5/2; score=score+20; } if(n1==4) { coin=coin+b*3; score=score+25; } if(n1==5) { coin=coin+b*7/2; score=score+30; } if(n1==6) { coin=coin+b*4; score=score+35; } } if((n4==n5)&&(n5==n6)) { d4++; d5++; d6++; line++; if(n4==1) { coin=coin+b*3/2; score=score+10; } if(n4==2) { coin=coin+b*2; score=score+15; } if(n4==3) { coin=coin+b*5/2; score=score+20; } if(n4==4) { coin=coin+b*3; score=score+25; } if(n4==5) { coin=coin+b*7/2; score=score+30; } if(n4==6) { coin=coin+b*4; score=score+35; } } if((n7==n8)&&(n8==n9)) { d7++; d8++; d9++; line++; if(n7==1) { coin=coin+b*3/2; score=score+10; } if(n7==2) { coin=coin+b*2; score=score+15; } if(n7==3) { coin=coin+b*5/2; score=score+20; } if(n7==4) { coin=coin+b*3; score=score+25; } if(n7==5) { coin=coin+b*7/2; score=score+30; } if(n7==6) { coin=coin+b*4; score=score+35; } } if((n1==n4)&&(n4==n7)) { d1++; d4++; d7++; line++; if(n1==1) { coin=coin+b*3/2; score=score+10; } if(n1==2) { coin=coin+b*2; score=score+15; } if(n1==3) { coin=coin+b*5/2; score=score+20; } if(n1==4) { coin=coin+b*3; score=score+25; } if(n1==5) { coin=coin+b*7/2; score=score+30; } if(n1==6) { coin=coin+b*4; score=score+35; } } if((n2==n5)&&(n5==n8)) { d2++; d5++; d8++; line++; if(n2==1) { coin=coin+b*3/2; score=score+10; } if(n2==2) { coin=coin+b*2; score=score+15; } if(n2==3) { coin=coin+b*5/2; score=score+20; } if(n2==4) { coin=coin+b*3; score=score+25; } if(n2==5) { coin=coin+b*7/2; score=score+30; } if(n2==6) { coin=coin+b*4; score=score+35; } } if((n3==n6)&&(n6==n9)) { d3++; d6++; d9++; line++; if(n3==1) { coin=coin+b*3/2; score=score+10; } if(n3==2) { coin=coin+b*2; score=score+15; } if(n3==3) { coin=coin+b*5/2; score=score+20; } if(n3==4) { coin=coin+b*3; score=score+25; } if(n3==5) { coin=coin+b*7/2; score=score+30; } if(n3==6) { coin=coin+b*4; score=score+35; } } if((n1==n5)&&(n5==n9)) { d1++; d5++; d9++; line++; if(n1==1) { coin=coin+b*3/2; score=score+10; } if(n1==2) { coin=coin+b*2; score=score+15; } if(n1==3) { coin=coin+b*5/2; score=score+20; } if(n1==4) { coin=coin+b*3; score=score+25; } if(n1==5) { coin=coin+b*7/2; score=score+30; } if(n1==6) { coin=coin+b*4; score=score+35; } } if((n3==n5)&&(n5==n7)) { d3++; d5++; d7++; line++; if(n3==1) { coin=coin+b*3/2; score=score+10; } if(n3==2) { coin=coin+b*2; score=score+15; } if(n3==3) { coin=coin+b*5/2; score=score+20; } if(n3==4) { coin=coin+b*3; score=score+25; } if(n3==5) { coin=coin+b*7/2; score=score+30; } if(n3==6) { coin=coin+b*4; score=score+35; } } if(d1>=1) s1=15; if(d2>=1) s2=15; if(d3>=1) s3=15; if(d4>=1) s4=15; if(d5>=1) s5=15; if(d6>=1) s6=15; if(d7>=1) s7=15; if(d8>=1) s8=15; if(d9>=1) s9=15; score=score+10; break; case 2: q=1; break; } if(q==1) break; } } }while(1); } #define BUF_SIZE 5 #define USED -1 // 使用過之牌設成 -1 #define N 52 #define SWAP(a, b){int t; t=a; a=b; b=t;} #define RANDOM(low, up)(int)(((up)-(low))*(double)(rand())/RAND_MAX +(low)) const char flower[4] = {'\5','\4','\3','\6'}; // 4個花色 const char number[13][BUF_SIZE] = { " A", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", " J", " Q", " K"}; // shuttle void shuttle(int *array, int Size) { int i, pos; srand((unsigned)time(NULL)); rand(); // 先抽掉一個亂數 for(i=0; i<=Size-1; i++) { // 取出第 pos 張牌 pos = RANDOM(0, N-1); // 將第 i 張牌與第 pos 張牌交換 SWAP(array[i], array[pos]); } } // display_card void display_card(int card) { putchar(flower[ card % 4 ]); printf("%s",number[ card >> 2 ]); } void display(int* array, int Size) { int i; for(i=0; i<=Size-1; i++) { if(array[i]!=USED) display_card(array[i]); printf("\n"); } } // 比較單張大小, a>b 傳回 1, ab) return 1; else return 0; } // 計算現有牌數之第 n 張牌之數值 int cal_n_pos(int *array, int Size, int n) { int number=0; // 點數 //將第N張使用的牌設為-1 while(array[n]==USED) n++; number = array[n]; array[n]=USED; return number; } void stu2() { int i, poker[N]; int card_cnt=N; // 剩下牌數 int draw_pos=0; // 玩家抽第幾張牌 int draw_number=0; // 玩家抽出之點數 int win=0,lose=0; // 戰積 int pc_pos; //pc抽第幾張牌 int pc_number;//pc抽出之點數 for(i=0; i<=N-1; i++) poker[i] = i; shuttle(poker,N); while(card_cnt!=0) { printf("----------------------\n"); printf("\n[the numbers of card: %2d]\n", card_cnt); // 顯示剩餘牌數 // 欲抽哪張牌 do{ printf("please input nth card to draw(1~%2d)(輸入0離開): ", card_cnt); scanf("%d", &draw_pos); if(draw_pos==0) break; if(draw_pos>card_cnt || draw_pos<=0) printf("input error!! input again\n"); }while(draw_pos>card_cnt || draw_pos<=0); if(draw_pos==0) break; draw_pos--; // 玩家抽出之點數 draw_number = cal_n_pos(poker, N, draw_pos); printf("You draw:"); display_card(draw_number); card_cnt--; // 電腦抽出之點數 pc_pos = RANDOM(0, card_cnt-1); pc_number = cal_n_pos(poker, N, pc_pos); printf("\nPC draw:"); display_card(pc_number); card_cnt--; printf("\n"); if(compare_single(draw_number, pc_number)) { win++; printf("you win!!\n"); } else { lose++; printf("pc wins!!\n"); } } printf("--------------------------\n"); printf("you win %d times!!\n", win); printf("you lose %d times!!\n", lose); printf("thank you for playing.."); } int answerBase[5040][4]; /*答案庫,會裝入所有重複的四位數,從1234到9876 5040是因為10*9*8*7,4是因為每組答案是一個四位數*/ int isOver, restart; //當作布林值,判斷是否遊戲結束以及是否要繼續玩 int remain; //答案庫裡面的答案數 int a, b; //拿來裝使用者回答的幾a幾b int randNum; //裝亂數,隨機從答案庫裡面拿答案 void stu3() { int select; while (1) { system("cls"); printf("Welcome to the guess number game ^^!!\n"); GNGMenu(); scanf_s("%d", &select); if (select == 0) { printf("Bye Bye ^^!!\n"); break; } switch (select) { case 1: GNGintro(); break; case 2: GNGstart(); break; default: break; } } } void GNGMenu() { printf("=======================================\n"); printf(" 0. Exit!\n"); printf(" 1. Introduction!\n"); printf(" 2. Start the game!\n"); printf("=======================================\n"); } void GNGintro() { system("cls"); printf("***************************************************\n"); printf("***************************************************\n"); printf("** **\n"); printf("** 規則說明: **\n"); printf("** 1. 每回合會猜一個四位數字 **\n"); printf("** 2. A的次數代表猜對了幾個數字且位置正確 **\n"); printf("** 3. B的次數代表猜對了幾個數字但位置不對 **\n"); printf("** 4. 你必須告訴A和B的值 **\n"); printf("** 5. 七回合內必可猜出答案 **\n"); printf("** **\n"); printf("***************************************************\n"); printf("***************************************************\n"); printf("Menu!"); system("pause"); } int GNGstart() { while (1 == 1) { system("cls"); printf("+++++++++++ Game Start !! ^^~ +++++++++++\n"); prepare(); while (!isOver) { ask(); answer(); if (isOver) break; think(); printf("------------------\n"); } menu(); if (!restart) break; } system("pause"); return 0; } void prepare(void) { int i, tmp, unit_1, unit_10, unit_100, unit_1000; remain = 5040; tmp = 0; //tmp只是一個拿來計數變數 isOver = 0; //判斷結束與否 for (i = 0; i<10000; i++)//這個for產生答案庫 { unit_1 = (i / 1) % 10; //以下四行把四位數拆成四個各位數分別存到四個變數 unit_10 = (i / 10) % 10; unit_100 = (i / 100) % 10; unit_1000 = (i / 1000) % 10; if (unit_1 != unit_10 && unit_1 != unit_100 && unit_1 != unit_1000 && unit_10 != unit_100 && unit_10 != unit_1000 && unit_100 != unit_1000) { answerBase[tmp][0] = unit_1000; answerBase[tmp][1] = unit_100; answerBase[tmp][2] = unit_10; answerBase[tmp][3] = unit_1; tmp++; } } } void ask(void) { int i; printf("Player:請問是"); srand(time(0)); while (1 == 1) { randNum = 0; for (i = 0; i<4; i++) { randNum *= 10; randNum += rand() % 10; } if (randNum 4)//如果a和b相加大於4當然就錯啦~ { printf("輸入錯誤\n\n"); right = 0; } } while (!right); if (a == 4) { printf("Player:耶~答對了!\n"); isOver = 1; } else if (remain == 1) //如果答案庫只剩一個答案,但是這答案還是錯的,就是玩家作弊! { printf("Player:你作弊!= =+\n"); isOver = 1; } } void think(void) { int i, j, k, aa, bb; int refer[4]; for (i = 0; i<4; i++) { refer[i] = answerBase[randNum][i]; } for (i = 0; i
2015年1月12日 星期一
[專題] 第三組 - 簡易訂票系統
程式設計專題
ppt
F.cpp
F.h
執行檔
管理者資料
使用者資料
活動資料
4. 介紹/解說的影片
ppt
F.cpp
#include#include #include "F.h" #define fshow "C:\\Users\\pcuser\\Desktop\\show.txt" //表演檔案的位置 #define fuser "C:\\Users\\pcuser\\Desktop\\user.txt" //使用者檔案的位置 #define fmanager "C:\\Users\\pcuser\\Desktop\\manager.txt" //管理者檔案的位置 char accountOfBoss[MAX_codeOfBoss] = "zaqxsw1h"; //老闆的帳號 char passwordOfBoss[MAX_codeOfBoss] = "zaqxsw1henry"; //老闆的密碼 S Show[MAX_show + 1]; //宣告Show的陣列 U User[MAX_user + 1]; //宣告User的陣列 M Manager[MAX_manager + 1]; //宣告Manage的陣列 int show_num; //活動數目 int user_num; //使用者數目 int manager_num; //管理者數目 int main() { FILE *fp_show; //宣告活動資料檔 FILE *fp_user; //宣告使用者資料檔 FILE *fp_manager; //宣告管理者資料檔 errno_t err_show; errno_t err_user; errno_t err_manager; int choice; //選項 //開啟活動資料檔 err_show = fopen_s(&fp_show, fshow, "r"); if (err_show != 0) printf("File can't be open!\n"); else { show_num = loadSHOW(fp_show); //載入活動資料 fclose(fp_show); //關閉檔案 } //開啟使用者資料檔 err_user = fopen_s(&fp_user, fuser, "r"); if (err_user != 0) printf("File can't be open!\n"); else { user_num = loadUSER(fp_user); //載入使用者資料 fclose(fp_user); //關閉檔案 } //開啟管理者資料檔 err_manager = fopen_s(&fp_manager, fmanager, "r"); if (err_user != 0) printf("File can't be open!\n"); else { manager_num = loadMANAGE(fp_manager); //載入管理者資料 fclose(fp_manager); //關閉檔案 } //主函式 while (1) { main_menu(); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: choice_boss(); break; case 2: choice_manager(); break; case 3: choice_user(); break; default: printf("\n輸入錯誤\n"); break; } system("pause"); } //開啟活動資料檔並將更新後的資料寫入 err_show = fopen_s(&fp_show, fshow, "w"); if (err_show != 0) printf("File can't be open!\n"); else { saveshow(fp_show); //儲存活動資料 fclose(fp_show); //關閉檔案 } //開啟使用者資料檔並將更新後的資料寫入 err_user = fopen_s(&fp_user, fuser, "w"); if (err_user != 0) printf("File can't be open!\n"); else { saveuser(fp_user); //儲存使用者資料 fclose(fp_user); //關閉檔案 } //開啟管理者資料檔並將更新後的資料寫入 err_manager = fopen_s(&fp_manager, fmanager, "w"); if (err_manager != 0) printf("File can't be open!\n"); else { savemanager(fp_manager); //儲存使用者資料 fclose(fp_manager); //關閉檔案 } system("pause"); } //讀取活動資料檔,並回傳活動數目 int loadSHOW(FILE *fp) { int count = 0; char title[1000]; fgets(title, 1000, fp); while (!feof(fp)) { count++; fscanf_s(fp, "%d", &Show[count].num); fscanf_s(fp, "%s", &Show[count].day, 6); fscanf_s(fp, "%s", &Show[count].name, 11); fscanf_s(fp, "%s", &Show[count].man, 11); fscanf_s(fp, "%s", &Show[count].place, 11); fscanf_s(fp, "%d", &Show[count].seat_A); fscanf_s(fp, "%d", &Show[count].max_A); fscanf_s(fp, "%d", &Show[count].price_A); fscanf_s(fp, "%d", &Show[count].seat_B); fscanf_s(fp, "%d", &Show[count].max_B); fscanf_s(fp, "%d", &Show[count].price_B); fscanf_s(fp, "%d", &Show[count].seat_C); fscanf_s(fp, "%d", &Show[count].max_C); fscanf_s(fp, "%d", &Show[count].price_C); } return count - 1; } //讀取使用者資料檔,並回傳使用者數目 int loadUSER(FILE *fp) { int count = 0, i; char title[1000]; fgets(title, 1000, fp); while (!feof(fp)) { count++; fscanf_s(fp, "%d", &User[count].index); fscanf_s(fp, "%s", &User[count].name, 11); fscanf_s(fp, "%d", &User[count].code); for (i = 1; i <= show_num; i++) //使用者的訂票情形,第一個欄位(i)表示活動的編號, { //第二個欄位的第一個數代表A座位,第二個數代表B座位,第三個代表C座位。 fscanf_s(fp, "%d", &User[count].ticket[i][1]); //第i場show的A座位的訂票情形 fscanf_s(fp, "%d", &User[count].ticket[i][2]); //第i場show的B座位的訂票情形 fscanf_s(fp, "%d", &User[count].ticket[i][3]); //第i場show的C座位的訂票情形 } } return count - 1; } //讀取管理者資料檔,並回傳使用者數目 int loadMANAGE(FILE *fp) { int count = 0; char title[128]; fgets(title, 128, fp); while (!feof(fp)) { count++; fscanf_s(fp, "%d", &Manager[count].num); fscanf_s(fp, "%s", &Manager[count].name, 11); fscanf_s(fp, "%d", &Manager[count].code); } return count - 1; } //主選單 void main_menu() { system("cls"); printf("********************歡迎來到1546售票系統*********************\n"); printf("0.離開\n"); printf("1.老闆登入\n"); printf("2.管理者登入\n"); printf("3.一般使用者登入\n"); printf("*************************************************************\n"); printf("請輸入您的選擇:"); } //老闆選單 void boss_menu() { system("cls"); printf("老闆您好,歡迎使用本系統\n"); printf("***************老闆選單*******************\n"); printf("0.離開\n"); printf("1.查詢管理者\n"); printf("2.新增管理者\n"); printf("3.刪除管理者\n"); printf("******************************************\n"); printf("請輸入您的選擇:"); } //管理者選單 void manager_menu(int manage_id) { system("cls"); printf("%s你好,歡迎使用本系統\n", Manager[manage_id].name); printf("***************管理者選單*******************\n"); printf("0.離開\n"); printf("1.查詢活動\n"); printf("2.查詢使用者\n"); printf("3.新增使用者\n"); printf("4.刪除使用者\n"); printf("5.新增活動\n"); printf("6.刪除活動\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); } //使用者選單 void user_menu(int user_id) { system("cls"); printf("%s你好,歡迎使用本系統\n", User[user_id].name); printf("***************使用者選單*******************\n"); printf("0.離開\n"); printf("1.查詢活動\n"); printf("2.訂票\n"); printf("3.退票\n"); printf("4.訂票情形\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); } //老闆選項 void choice_boss() { char boss_account[MAX_codeOfBoss]; //老闆帳號 char boss_password[MAX_codeOfBoss]; //老闆密碼 int i,j; char temp; //小技巧:將\n吃掉,避免輸入時發生錯誤 system("cls"); printf("*****************老闆登入*******************\n"); printf("請輸入帳號:"); scanf_s("%c", &temp); i = 0; while ((boss_account[i] = getchar()) != '\n') i++; for (j = i; j < MAX_codeOfBoss; j++) { boss_account[j] = '\0'; } printf("請輸入密碼:"); i = 0; while ((boss_password[i] = getchar()) != '\n') i++; for (j = i; j < MAX_codeOfBoss; j++) { boss_password[j] = '\0'; } i = 0; while (1) { if (boss_account[i] != accountOfBoss[i]) { printf("\n帳號錯誤\n"); break; } if (boss_password[i] != passwordOfBoss[i]) { printf("\n密碼錯誤\n"); break; } if (i == MAX_codeOfBoss-1) { boss(); break; } i++; } system("pause"); } //管理者選項 void choice_manager() { int manage_id; //管理者編號 int manage_code; //管理者密碼 int i; system("cls"); printf("*****************管理者登入*******************\n"); printf("請輸入管理者編號:"); scanf_s("%d", &manage_id); for (i = 1; i <= manager_num; i++) { if (manage_id == Manager[i].num) { printf("%s你好,請輸入密碼:", Manager[i].name); scanf_s("%d", &manage_code); if (manage_code == Manager[i].code) { manager(i); break; } else printf("\n密碼錯誤!!!\n"); } else if (i == manager_num) printf("\n無此編號!!!\n"); } system("pause"); } //使用者選項 void choice_user() { int user_id; //會員編號 int user_code; //會員密碼 int i; system("cls"); printf("*****************使用者登入*******************\n"); printf("請輸入會員編號:"); scanf_s("%d", &user_id); for (i = 1; i <= user_num; i++) { if (user_id == User[i].index) { printf("%s你好,請輸入密碼:", User[i].name); scanf_s("%d", &user_code); if (user_code == User[i].code) { user(i); break; } else printf("\n密碼錯誤!!!\n"); } else if (i == user_num) printf("\n無此編號\n"); } system("pause"); } //老闆副程式 void boss() { int choice; int i; while (1) { boss_menu(); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: searchmanager(); break; case 2: searchmanager(); addnewmanager(); searchmanager(); break; case 3: searchmanager(); deletemanager(); searchmanager(); break; default: printf("\n錯誤選項\n"); break; } system("pause"); } } //查詢管理者程式 void searchmanager() { int i; printf("***********************管理者相關資訊表*******************************\n"); printf("\n%4s %10s %10s\n", "Num", "Name", "Code"); for (i = 1; i <= manager_num; i++) { printf("%4d %10s %10d\n" , Manager[i].num, Manager[i].name, Manager[i].code); } printf("\n************************************************************************\n"); } //新增管理者程式 void addnewmanager() { char temp; //小技巧:將\n吃掉,避免輸入時發生錯誤 int i, j; if (manager_num + 1>MAX_manager) printf("\n\n已超出管理者數量上限,無法新增新管理者\n"); else { printf("\n\n****************輸入新管理者的相關資料******************\n"); printf("管理者編號(<=4個數字):"); scanf_s("%d", &(Manager[manager_num + 1].num)); scanf_s("%c", &temp); printf("管理者名稱(<=10個字元):"); i = 0; while ((Manager[manager_num + 1].name[i] = getchar()) != '\n') i++; Manager[manager_num + 1].name[i] = '\0'; printf("管理者密碼(<=10個數字):"); scanf_s("%d", &(Manager[manager_num + 1].code)); } manager_num++; printf("\n新增成功!!\n"); } //刪除管理者程式 void deletemanager() { int choice; int i; int index; printf("\n\n請輸入欲刪除的管理者編號\n"); scanf_s("%d", &choice); for (i = 1; i <= manager_num; i++) { if (Manager[i].num == choice) { index = i; break; } else index = 0; } if (index != 0) { for (i = index; i <= manager_num; i++) { Manager[i] = Manager[i + 1]; } manager_num--; } else printf("無此編號\n"); } //管理者副程式 void manager(int manager_id) { int choice; int i; while (1) { manager_menu(manager_id); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: searchshow(); break; case 2: searchuser(); break; case 3: searchuser(); addnewuser(); searchuser(); break; case 4: searchuser(); deleteuser(); searchuser(); break; case 5: searchshow(); appendshow(); searchshow(); break; case 6: searchshow(); deleteshow(); searchshow(); break; default: printf("\n錯誤選項\n"); break; } system("pause"); } } //查詢活動程式 void searchshow() { int i; printf("***********************活動相關資訊表*******************************\n"); for (i = 1; i <= show_num; i++) { printf("\n%4s %5s %10s %10s %10s\n", "Num", "Day", "NameOfShow", "Performer", "Place"); printf("%4d %5s %10s %10s %10s\n\n" , Show[i].num, Show[i].day, Show[i].name, Show[i].man, Show[i].place); printf("活動%d的訂位資訊:\n", Show[i].num); printf("%15s %15s %15s\n", "NumOfSeatA", "MaxOfSeatA", "PriceOfSeatA"); printf("%15d %15d %15d\n" , Show[i].seat_A, Show[i].max_A, Show[i].price_A); printf("%15s %15s %15s\n", "NumOfSeatB", "MaxOfSeatB", "PriceOfSeatB"); printf("%15d %15d %15d\n" , Show[i].seat_B, Show[i].max_B, Show[i].price_B); printf("%15s %15s %15s\n", "NumOfSeatC", "MaxOfSeatC", "PriceOfSeatC"); printf("%15d %15d %15d\n" , Show[i].seat_C, Show[i].max_C, Show[i].price_C); printf("\n"); printf("******************************************************************************\n"); } } //查詢使用者程式 void searchuser() { int i, j; printf("***********************使用者相關資訊表*******************************\n"); for (i = 1; i <= user_num; i++) { printf("\n%4s %10s %10s\n", "Num", "NameOfUser", "CodeOfUser"); printf("%4d %10s %10d\n\n" , User[i].index, User[i].name, User[i].code); for (j = 1; j <= show_num; j++) { printf("活動%d的訂位情形:\n", Show[j].num); printf(" SeatAOfShow%2d SeatBOfShow%2d SeatCOfShow%2d\n", Show[j].num, Show[j].num, Show[j].num); printf(" %13d %13d %13d\n", User[i].ticket[j][1], User[i].ticket[j][2], User[i].ticket[j][3]); } printf("\n************************************************************************\n"); } } //新增使用者程式 void addnewuser() { char temp; //小技巧:將\n吃掉,避免輸入時發生錯誤 int i, j; if (user_num + 1>MAX_user) printf("\n\n已超出使用者數量上限,無法新增新使用者\n"); else { printf("\n\n****************輸入新使用者的相關資料******************\n"); printf("使用者編號(<=4個數字):"); scanf_s("%d", &(User[user_num + 1].index)); scanf_s("%c", &temp); printf("使用者名稱(<=10個字元):"); i = 0; while ((User[user_num + 1].name[i] = getchar()) != '\n') i++; User[user_num + 1].name[i] = '\0'; printf("使用者密碼(<=10個數字):"); scanf_s("%d", &(User[user_num + 1].code)); for (i = 1; i <= show_num; i++) { for (j = 1; j <= 3; j++) User[user_num + 1].ticket[i][j] = 0; } } user_num++; printf("\n新增成功!!\n"); } //刪除使用者程式 void deleteuser() { int choice; int i; int index; printf("\n\n請輸入欲刪除的使用者編號\n"); scanf_s("%d", &choice); for (i = 1; i <= user_num; i++) { if (User[i].index == choice) { index = i; break; } else index = 0; } if (index != 0) { for (i = index; i <= user_num; i++) { User[i] = User[i + 1]; } user_num--; } else printf("無此編號\n"); } //新增活動的程式 void appendshow() { char temp;//小技巧:將\n吃掉,避免輸入時發生錯誤 int i; if (show_num + 1>MAX_show) printf("\n\n已超出活動數量上限,無法新增新活動\n"); else { printf("\n\n****************輸入新活動的相關資料******************\n"); printf("活動編號(<=4個數字):"); scanf_s("%d", &(Show[show_num + 1].num)); scanf_s("%c", &temp); printf("活動日期:"); i = 0; while ((Show[show_num + 1].day[i] = getchar()) != '\n') i++; Show[show_num + 1].day[i] = '\0'; printf("活動名稱(<=10個字元):"); i = 0; while ((Show[show_num + 1].name[i] = getchar()) != '\n') i++; Show[show_num + 1].name[i] = '\0'; printf("活動表演者(<=10個字元):"); i = 0; while ((Show[show_num + 1].man[i] = getchar()) != '\n') i++; Show[show_num + 1].man[i] = '\0'; printf("活動地點(<=10個字元):"); i = 0; while ((Show[show_num + 1].place[i] = getchar()) != '\n') i++; Show[show_num + 1].place[i] = '\0'; Show[show_num + 1].seat_A = 0; printf("第一區座位上限:"); scanf_s("%d", &(Show[show_num + 1].max_A)); printf("第一區座位票價:"); scanf_s("%d", &(Show[show_num + 1].price_A)); Show[show_num + 1].seat_B = 0; printf("第二區座位上限:"); scanf_s("%d", &(Show[show_num + 1].max_B)); printf("第二區座位票價:"); scanf_s("%d", &(Show[show_num + 1].price_B)); Show[show_num + 1].seat_C = 0; printf("第三區座位上限:"); scanf_s("%d", &(Show[show_num + 1].max_C)); printf("第三區座位票價:"); scanf_s("%d", &(Show[show_num + 1].price_C)); } show_num++; printf("\n新增成功!!\n"); printf("\n\n展示活動相關資訊表\n"); system("pause"); } //刪除活動的程式 void deleteshow() { int choice; int i; int index; printf("\n\n請輸入欲刪除的活動編號\n"); scanf_s("%d", &choice); for (i = 1; i <= show_num; i++) { if (Show[i].num == choice) { index = i; break; } else index = 0; } if (index != 0) { for (i = index; i <= show_num; i++) { Show[i] = Show[i + 1]; } show_num--; } else printf("無此編號\n"); } //使用者副程式 void user(int user_id) { int choice; while (1) { user_menu(user_id); scanf_s("%d", &choice); if (choice == 0) { printf("離開系統\n"); break; } switch (choice) { case 1: searchshow(); break; case 2: searchshow(); addticket(user_id); break; case 3: searchshow(); cancelticket(user_id); break; case 4: situationOfTicket(user_id); break; default: printf("\n輸入錯誤\n"); break; } system("pause"); } } //訂票副程式 void addticket(int user_id) { int choice; while (1) { printf("\n\n***************訂票程式*********************\n"); printf("0.回使用者選單\n"); printf("1.訂票\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &choice); if (choice == 0) break; else if (choice == 1) { addticket2(user_id); } else printf("\n輸入錯誤\n"); } } //訂票2副程式 void addticket2(int user_id) { int show_id, ticket, locate; int i, index; printf("欲訂票之活動編號:"); scanf_s("%d", &show_id); for (i = 1; i <= show_num; i++) { if (Show[i].num == show_id) { index = i; break; } else index = 0; } if (index != 0) { printf("\n\n***************分區訂票*********************\n"); printf("1.第一區,%d元\n", Show[index].price_A); printf("2.第二區,%d元\n", Show[index].price_B); printf("3.第三區,%d元\n", Show[index].price_C); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &locate); switch (locate) { case 1: printf("預定的張數:"); scanf_s("%d", &ticket); if (ticket + Show[index].seat_A <= Show[index].max_A) { Show[index].seat_A += ticket; User[user_id].ticket[index][1] += ticket; printf("\n訂票成功\n"); } else printf("\n訂票失敗\n"); break; case 2: printf("預定的張數:"); scanf_s("%d", &ticket); if (ticket + Show[index].seat_B <= Show[index].max_B) { Show[index].seat_B += ticket; User[user_id].ticket[index][2] += ticket; printf("\n訂票成功\n"); } else printf("\n訂票失敗\n"); break; case 3: printf("預定的張數:"); scanf_s("%d", &ticket); if (ticket + Show[index].seat_C <= Show[index].max_C) { Show[index].seat_C += ticket; User[user_id].ticket[index][3] += ticket; printf("\n訂票成功\n"); } else printf("\n訂票失敗\n"); break; } } else printf("無此編號\n"); } //取消訂票副程式 void cancelticket(int user_id) { int choice; while (1) { printf("\n\n***************取消訂票*********************\n"); printf("0.回使用者選單\n"); printf("1.取消訂票\n"); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &choice); if (choice == 0) break; else if (choice == 1) { cancelticket2(user_id); } else printf("\n輸入錯誤\n"); } } //取消訂票2副程式 void cancelticket2(int user_id) { int show_id, locate, ticket; int i, index; printf("欲取消訂票之活動編號:"); scanf_s("%d", &show_id); for (i = 1; i <= show_num; i++) { if (Show[i].num == show_id) { index = i; break; } else index = 0; } if (index != 0) { printf("\n\n*************分區取消訂票*******************\n"); printf("1.第一區已定%d張\n", User[user_id].ticket[index][1]); printf("2.第二區已定%d張\n", User[user_id].ticket[index][2]); printf("3.第三區已定%d張\n", User[user_id].ticket[index][3]); printf("********************************************\n"); printf("請輸入您的選擇:"); scanf_s("%d", &locate); switch (locate) { case 1: printf("預取消的張數:"); scanf_s("%d", &ticket); if (User[user_id].ticket[index][1] - ticket >= 0) { Show[index].seat_A -= ticket; User[user_id].ticket[index][1] -= ticket; printf("\n取消訂票成功\n"); } else printf("\n取消訂票失敗\n"); break; case 2: printf("預取消的張數:"); scanf_s("%d", &ticket); if (User[user_id].ticket[index][2] - ticket >= 0) { Show[index].seat_B -= ticket; User[user_id].ticket[index][2] -= ticket; printf("\n取消訂票成功\n"); } else printf("\n取消訂票失敗\n"); break; case 3: printf("預取消的張數:"); scanf_s("%d", &ticket); if (User[user_id].ticket[index][3] - ticket >= 0) { Show[index].seat_C -= ticket; User[user_id].ticket[index][3] -= ticket; printf("\n取消訂票成功\n"); } else printf("\n取消訂票失敗\n"); break; } } } //使用者的訂票情形 void situationOfTicket(int user_id) { int i; printf("\n\n***************訂票情形*********************\n"); for (i = 1; i <= show_num; i++) { printf("活動%d:第一區%2d張,第二區%2d張,第三區%2d張\n", Show[i].num, User[user_id].ticket[i][1], User[user_id].ticket[i][2], User[user_id].ticket[i][3]); } } //儲存活動資料 void saveshow(FILE *fp) { int i; fprintf(fp, "%4s %5s %10s %10s %10s %15s %15s %15s %15s %15s %15s %15s %15s %15s\n", "Num", "Day", "NameOfShow", "Performer", "Place" , "NumOfSeatA", "MaxOfSeatA", "PriceOfSeatA" , "NumOfSeatB", "MaxOfSeatB", "PriceOfSeatB" , "NumOfSeatC", "MaxOfSeatC", "PriceOfSeatC"); for (i = 1; i <= show_num; i++) { fprintf(fp, "%4d %5s %10s %10s %10s %15d %15d %15d %15d %15d %15d %15d %15d %15d\n" , Show[i].num, Show[i].day, Show[i].name, Show[i].man, Show[i].place , Show[i].seat_A, Show[i].max_A, Show[i].price_A , Show[i].seat_B, Show[i].max_B, Show[i].price_B , Show[i].seat_C, Show[i].max_C, Show[i].price_C); } } //儲存使用者資料 void saveuser(FILE *fp) { int i, j; fprintf(fp, "%4s %10s %10s", "Num", "NameOfUser", "CodeOfUser"); for (i = 1; i <= show_num; i++) { fprintf(fp, " SeatAOfShow%d SeatBOfShow%d SeatCOfShow%d", Show[i].num, Show[i].num, Show[i].num); } fprintf(fp, "\n"); for (i = 1; i <= user_num; i++) { fprintf(fp, "%4d %10s %10d", User[i].index, User[i].name, User[i].code); for (j = 1; j <= show_num; j++) { fprintf(fp, " %13d %13d %13d", User[i].ticket[j][1], User[i].ticket[j][2], User[i].ticket[j][3]); } fprintf(fp, "\n"); } } //儲存管理者資料 void savemanager(FILE *fp) { int i; fprintf(fp, "%4s %10s %10s\n", "Num", "Name", "Code"); for (i = 1; i <= manager_num; i++) { fprintf(fp, "%4d %10s %10d\n" , Manager[i].num, Manager[i].name, Manager[i].code); } }
F.h
#include#define MAX_show 10 //活動的最大數 #define MAX_user 10 //使用者的最大數 #define MAX_manager 10 //管理者的最大數 #define MAX_codeOfBoss 20 //老闆的帳號和密碼的最大長度 struct SHOW //活動或表演的結構宣告 { int num; //編號 char day[6]; //日期 char name[11]; //活動名稱 char man[11]; //表演者 char place[11]; //活動地點 int seat_A; //種類A的座位 int max_A; //種類A座位的上限 int price_A; //種類A的票價 int seat_B; //種類B的座位 int max_B; //種類B座位的上限 int price_B; //種類B的票價 int seat_C; //種類C的座位 int max_C; //種類C座位的上限 int price_C; //種類C的票價 }; typedef struct SHOW S; struct USER //使用者的結構宣告 { int index; //編號 char name[11]; //使用者名稱 int code; //密碼 int ticket[MAX_show + 1][4]; //訂票情形,第一個欄位表示活動的編號 }; //,第二個欄位的第一個數代表A座位 typedef struct USER U; //,第二個數代表B座位,第三個代表C座位。 struct MANAGER //管理者的結構宣告 { int num; //編號 char name[11]; //管理者名稱 int code; //密碼 }; typedef struct MANAGER M; int loadSHOW(FILE *fp); //讀取活動資料檔,並回傳活動數目 int loadUSER(FILE *fp); //讀取使用者資料檔,並回傳使用者數目 int loadMANAGE(FILE *fp); //讀取管理者資料檔,並回傳管理者數目 void main_menu(); //主選單 void boss_menu(); //老闆選單 void manager_menu(int manager_id); //管理者選單 void user_menu(int user_id); //使用者選單 void choice_boss(); //老闆選項 void choice_manager(); //管理者選項 void choice_user(); //使用者選項 void boss(); //老闆副程式 void searchmanager(); //查詢管理者程式 void addnewmanager(); //新增管理者程式 void deletemanager(); //刪除管理者程式 void manager(int manage_id); //管理者副程式 void searchshow(); //查詢活動程式 void searchuser(); //查詢使用者程式 void addnewuser(); //新增使用者程式 void deleteuser(); //刪除使用者程式 void appendshow(); //新增活動的程式 void deleteshow(); //刪除活動的程式 void user(int user_id); //使用者副程式 void addticket(int user_id); //訂票副程式 void addticket2(int user_id); //訂票2副程式 void cancelticket(int user_id); //取消訂票副程式 void cancelticket2(int user_id); //取消訂票2副程式 void situationOfTicket(int user_id); //使用者的訂票情形 void saveshow(FILE *fp); //儲存活動資料 void saveuser(FILE *fp); //儲存使用者資料 void savemanager(FILE *fp); //儲存管理者資料
執行檔
管理者資料
使用者資料
活動資料
4. 介紹/解說的影片
訂閱:
文章 (Atom)