C_and_CPP 板


LINE

我在寫一個簡單的打地鼠 可是分數 num 每次在空跑了幾輪後就會莫名地變成極大的數 我和同學找了很久都找不到原因 不知道是什麼原因 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #include <conio.h> void creat(void); void display(void); void hit(void); int num=0; // 分數跑過幾輪後會變很大 char mouse[8]={0}; int main(void) { int count=0; srand(time(NULL)); while(1) { creat(); //建立圖形 while(1) { hit(); //檢查是否按鍵 count++; if(count==1)//原定40000 { system("cls"); display(); //顯示 count=0; break; } } system("cls"); } return 0; } void creat(void) { int number; int a,b,c,d; memset(mouse,'0',8); number=rand()%5; //隨機取地鼠隻數 a=rand()%8; //隨機取地鼠出現的地點 b=( (a*2501+35)-37 )%8; //亂取 c=( (b*2083+90)-36 )%8; d=( (c*1779+11)-39 )%8; if(number==1) mouse[a]='1'; else if(number==2) { mouse[a]='1'; mouse[b]='1'; } else if(number==3) { mouse[a]='1'; mouse[b]='1'; mouse[c]='1'; } else if(number==4) { mouse[a]='1'; mouse[b]='1'; mouse[c]='1'; mouse[d]='1'; } display(); } void display() { int i; for(i=0;i<8;i++) { if(i==4) printf("\n"); if(mouse[i]=='0') //沒地鼠 printf("○ "); else if(mouse[i]=='1') //有地鼠 printf(" § "); else if(mouse[i]=='2') //打到地鼠 printf("hit! "); } printf("\n\n得分:%d\n",num); } void hit(void) { char down=' '; if( kbhit() ) //檢查是否按鍵 { down=getch(); if(down=='g' && mouse[0]=='1') { num+=10; mouse[0]='2'; system("cls"); display(); } if(down=='h' && mouse[1]=='1') { num+=10; mouse[1]='2'; system("cls"); display(); } if(down=='j' && mouse[2]=='1') { num+=10; mouse[2]='2'; system("cls"); display(); } if(down=='k' && mouse[3]=='1') { num+=10; mouse[3]='2'; system("cls"); display(); } if(down=='v' && mouse[4]=='1') { num+=10; mouse[4]='2'; system("cls"); display(); } if(down=='b' && mouse[5]=='1') { num+=10; mouse[5]='2'; system("cls"); display(); } if(down=='n' && mouse[6]=='1') { num+=10; mouse[6]='2'; system("cls"); display(); } if(down=='m' && mouse[7]=='1') { num+=10; mouse[7]='2'; system("cls"); display(); } down=' '; } } --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.13.191
1F:推 plover:num一直被用,而且num不應放在外面,num改score語意也會好些 02/15 23:57
2F:推 kikiqqp:num一直被num+ 你要全域宣告num 就要確保重複時有重置 02/16 00:00
3F:→ kikiqqp:除非特殊需求 02/16 00:00
4F:→ clarkman:我想請問當我沒按鍵,kbhit()會回傳0,就進不去if 02/16 00:04
5F:→ clarkman:這時候為什麼會改到num?? 我在其他地方沒有改變num的值 02/16 00:05
6F:→ clarkman:我等等會把他改成區域變數 02/16 00:05
7F:→ clarkman:修改為區域變數後確實不會亂跑了^^...不過還是很好奇 02/16 00:15
8F:→ clarkman:為什麼之前的函式會一直跑num+=10?? 02/16 00:15
9F:推 yoco315:教你,你設一個 watch 點在本來全域的 num 02/16 02:27
10F:→ yoco315:這樣當變數發生變動的時候,程式就會暫停 02/16 02:27
11F:→ yoco315:你就可以看到到底是誰在改他… 02/16 02:28
12F:→ yoco315:但是這樣也會攔截到你自己正常的改動 02/16 02:28
13F:→ yoco315:記得把 watch 加上條件式…這樣就可以抓到異常變動處了 02/16 02:28
14F:推 StubbornLin:為什麼全域變數邪惡? 因為行程式都可能是兇手 02/16 09:52
15F:→ StubbornLin:你的程式碼有三千行 嫌疑犯就有三千行 02/16 10:21
16F:→ clarkman:了解~~感謝大家^^...我會少用全域變數 02/16 10:44
17F:推 adamkk:-1 % 8 == -1 你rand 的東西有可能變負的 02/17 11:25







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP