廢話不多說 今天寫一下如何讓電腦成為你心目中的伴侶
結果如下圖:
在此先說明此1A2B的遊戲規則之後文章不在贅述
1.是一個4位數,其中0~9不得在同一個4位數內出現兩次而且千位數不能是0所以以下是不能出現的情況(EX:0123,1223,1315,1454等)所以範圍1023~9876
2.本遊戲是讓電腦猜你心裡的數字後,你回答幾A幾B,所以..流程=>電腦猜你數字假設(1234)=>你心目中的答案是1235所以你回答3A0B=>....以此類推,直到電腦猜到你的數字為止
3.使用者不得欺負電腦,如5A0B不可能出現的數字,或者一次的遊戲內是你心裡想的答案不斷更換,若有以上情況電腦應該都會出現ERROR提示使用者.....
4.電腦成功猜出數字時(當你輸入4A0B時),會高興的跟你說猜到了
-------------------以上為本1A2B大概的遊戲規則-------------------
結果如下圖:
在此先說明此1A2B的遊戲規則之後文章不在贅述
1.是一個4位數,其中0~9不得在同一個4位數內出現兩次而且千位數不能是0所以以下是不能出現的情況(EX:0123,1223,1315,1454等)所以範圍1023~9876
2.本遊戲是讓電腦猜你心裡的數字後,你回答幾A幾B,所以..流程=>電腦猜你數字假設(1234)=>你心目中的答案是1235所以你回答3A0B=>....以此類推,直到電腦猜到你的數字為止
3.使用者不得
4.電腦成功猜出數字時(當你輸入4A0B時),會
-------------------以上為本1A2B大概的遊戲規則-------------------
現在大家清楚了遊戲規則後我大概分成幾個步驟
1.輸入兩個數字 拆數字(稍後本文介紹)
2.比對1A2B
3.創造一個1023~9876之間的陣列且不得有重複數字(請見規則1)此陣列用來標記有無可能是使用者猜的數字 有可能則1不可能則0幾A幾B
4.電腦每次產生一個亂數在1023~9876之間且不得重複數字出現每猜完一次下一次亂數就不可能再出現(利用第二步的陣列)
5.結合 功能整合
-----------------------數字拆解讓電腦辨別幾A幾B---------------------
首要達成目標 使用者輸入兩個數字讓電腦做比對動作,並顯示幾A幾B
假設有兩個數字1023 1024整數
我們自己去比對一個一個看 那麼既然知道是一個一個看
也就可以知道我們能用陣列一個一個下去比對
如下:我把1023 1024個別存到box1和box2這兩個陣列裡面
所以創出兩個陣列大小為4 然後一個一個去比對用迴圈方式做4次
當然若要比對,基本上就是要拆數字 給個觀念
1234=(A*1000+B*100+C*10+D*1)相信這個大家都會算
那麼若用電腦拆數字呢??
我們設一A,B,C,D的整數
是不是就變成...
1234/1000=A
1234=(1234-A*1000)/100=B
1234=(1234-A*1000-B*100)/10=C
1234=(1234-A*1000-B*100-C*10)/1=D
我們發現每次數字拆解都是4次而且取值都需要上一次的結果
抓下來運算 需要一個巢狀迴圈
所以......JAVA結果為
程式碼如下:Dismantling為函數拆解
import java.util.*; public class NumberComparison { static int a1=0,b1=0,i=0,a=0,b=0,c=0,d=0; static int[] box1=new int[4]; static int[] box2=new int[4]; public static void main(String args[]) { Scanner sc=new Scanner (System.in); System.out.println("a1的數值為"); a1=sc.nextInt(); System.out.println("b1的數值為"); b1=sc.nextInt(); Dismantling1(a1); Dismantling2(b1); for(i=0;i<=3;i++) { System.out.println("box1\t"+box1[i]); } for(i=0;i<=3;i++) { System.out.println("box2\t"+box2[i]); } } public static void Dismantling1(int a1) { for(i=0;i<=3;i++) { switch(i) { case 0: a=a1/1000; box1[i]=a; break; case 1: b=(a1-a*1000)/100; box1[i]=b; break; case 2: c=(a1-a*1000-b*100)/10; box1[i]=c; break; case 3: d=(a1-a*1000-b*100-c*10)/1; box1[i]=d; break; } } } public static void Dismantling2(int b1) { for(i=0;i<=3;i++) { switch(i) { case 0: a=b1/1000; box2[i]=a; break; case 1: b=(b1-a*1000)/100; box2[i]=b; break; case 2: c=(b1-a*1000-b*100)/10; box2[i]=c; break; case 3: d=(b1-a*1000-b*100-c*10)/1; box2[i]=d; break; } } } }
沒有留言:
張貼留言