程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 代碼分享:心算24小游戲(1)

代碼分享:心算24小游戲(1)

編輯:關於JAVA

游戲規則:[請玩家仔細閱讀]

(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低於0分時,玩家輸;

(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;

(3)游戲過程中,玩家可以刷新撲克牌,但每刷新一次都會扣3分;

(4)玩家將四張撲克牌,用+、-、*、/及適當的括號組合起來,並把組合的表達式【用英文輸入法】填到輸入框裡面【注意每張紙牌只可以使用一次】;

(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數學規律,及是否為游戲顯示的四張撲克牌的上的數字;

(6)如果輸入合法,將系統將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;

(7)若玩家在1分30秒後才算出答案,則得4分,有鬼得8分,錯誤扣2分;

Java代碼片段:

  1. import Java.awt.BorderLayout;
  2. import Java.awt.Color;
  3. import Java.awt.Container;
  4. import Java.awt.Dimension;
  5. import Java.awt.FlowLayout;
  6. import Java.awt.Font;
  7. import Java.awt.Label;
  8. import Java.awt.TextFIEld;
  9. import Java.awt.event.ActionEvent;
  10. import Java.awt.event.ActionListener;
  11. import Java.awt.event.WindowAdapter;
  12. import Java.awt.event.WindowEvent;
  13. import Java.Net.URL;
  14. import Java.util.Random;
  15. import Javax.swing.ImageIcon;
  16. import Javax.swing.JButton;
  17. import Javax.swing.JFrame;
  18. import Javax.swing.JLabel;
  19. import Javax.swing.JPanel;
  20. import Javax.swing.JTextArea;
  21. public class Calculate24 implements ActionListener{
  22. JFrame frame=new JFrame();//創建窗口框架
  23. Dimension screen=frame.getToolkit().getScreenSize();//獲取顯示器的分辨率
  24. Container con=frame.getContentPane();//給窗體框架添加容器
  25. TextField txtFIEld=new TextFIEld(30);//輸入表達式的區域
  26. JPanel Buttompnl=new JPanel(); //按鈕和其他組件的面板
  27. private int count=43;//初始積分40
  28. JLabel Title=new JLabel("歡迎使用頭腦風暴之心算24點----劉學炜、范碧天、許培濤、陳燕茜同組合作設計");
  29. JTextArea Count=new JTextArea();//用於顯示游戲規則及提示
  30. MyTimer timeshow=new MyTimer();//顯示時間
  31. JPanel pokerPanel=new JPanel();//顯示撲克牌的面板
  32. JButton btnStart=new JButton("開始游戲/洗牌");//開始游戲和刷牌的按鈕
  33. JButton btnOk=new JButton("確定");//確定按鈕
  34. Label label=new Label("請輸入表達式:");//顯示輸入表達式
  35. JLabel poker1=new JLabel();//顯示四張撲克牌
  36. JLabel poker2=new JLabel();
  37. JLabel poker3=new JLabel();
  38. JLabel poker4=new JLabel();
  39. private Check c=new Check();//引入check類的對象
  40. Random ran=new Random();//引入隨機函數類對象
  41. private float [] myStatus=new float[4];//四張撲克牌上對應的數字
  42. private char [] mystatus=new char[4];//四張撲克牌上對應的花色
  43. private float[] numbers=new float[4];//輸入表達式的四個數字
  44. private float[] different=new float[4];//調整積分的差別
  45. private boolean addscore=false;//判斷是否加雙倍積分
  46. Calculate24(){
  47. frame.setTitle("頭腦風暴之心算24點");
  48. Count.setEditable(false);
  49. Count.setLineWrap(true);
  50. Count.setWrapStyleWord(true);
  51. Count.setSize(600, 85);
  52. Count.setBackground(new Color(18,132,57));
  53. Count.setText("游戲規則:[請玩家仔細閱讀]" +
  54. "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低於0分時,玩家輸;" +
  55. "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
  56. "\n(3)游戲過程中,玩家可以刷新撲克牌,但每刷新一次都會扣3分;"+
  57. "\n(4)玩家將四張撲克牌,用+、-、*、/及適當的括號組合起來,並把組合的表達式【用英文輸入法】填到輸入框裡面【注意每張紙牌只可以使用一次】;"+
  58. "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數學規律,及是否為游戲顯示的四張撲克牌的上的數字;"+
  59. "\n(6)如果輸入合法,將系統將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;" +
  60. "\n(7)若玩家在1分30秒後才算出答案,則得4分,有鬼得8分,錯誤扣2分;"
  61. );
  62. //界面組件的相關設計
  63. con.add(Title,BorderLayout.NORTH);
  64. con.add(Buttompnl,BorderLayout.SOUTH);
  65. con.add(pokerPanel,BorderLayout.CENTER);
  66. Buttompnl.add(btnStart);
  67. Buttompnl.add(label);
  68. Buttompnl.add(txtFIEld);
  69. btnStart.setActionCommand("start");
  70. btnStart.addActionListener(this);//添加開始按鈕監聽器
  71. btnOk.setActionCommand("ok");
  72. btnOk.addActionListener(this); //添加確定按鈕監聽器
  73. pokerPanel.add(poker1);
  74. pokerPanel.add(poker2);
  75. pokerPanel.add(poker3);
  76. pokerPanel.add(poker4);
  77. pokerPanel.add(Count,BorderLayout.SOUTH);
  78. }
  79. //監聽器設計
  80. public void actionPerformed(ActionEvent e) {
  81. //按下開始按鈕
  82. Count.setFont(new Font("Dialog",Font.PLAIN,20));
  83. if(e.getActionCommand().equals("start")){
  84. timeshow.usedTime=0;//時間歸零
  85. timeshow.timer.start(); //開始計時
  86. Buttompnl.add(btnOk);
  87. Buttompnl.add(timeshow.usedTimeLabel);
  88. timeshow.timeText.setText("0分0秒");
  89. Buttompnl.add(timeshow.timeText);
  90. count-=3;//刷牌扣3分
  91. Count.setText("\n\n您目前的積分是:"+count+
  92. "\n上一道題的系統答案是:"+c.outputs);
  93. try{for(int i=0;i<4;i++){
  94. myStatus[i]=(float) ((int)(ran.nextFloat()*14+1));//隨機產生四張牌
  95. mystatus[i]=(char) ('A'+(int)(ran.nextFloat()*4));//隨機產生花色
  96. if(myStatus[i]>10f){//對J、Q、K、鬼作10處理
  97. different[i]=myStatus[i]-10f;
  98. myStatus[i]-=different[i];
  99. }
  100. else
  101. different[i]=0f;
  102. if(i==3&&!c.check(myStatus))//檢驗所產生的紙牌是否能夠算出24
  103. i=2;
  104. }
  105. if(count<0){//查看刷牌後剩余的積分是否小於0
  106. timeshow.timer.stop();//停止計時
  107. timeshow.usedTime=0;//重新時間歸零
  108. for(int i=0;i<4;i++){//返回初始界面
  109. myStatus[i]=0f;
  110. mystatus[i]='A';
  111. }
  112. NewPanel(myStatus,mystatus);
  113. Buttompnl.remove(btnOk);
  114. txtFIEld.setText("");
  115. Count.setFont(new Font("Dialog",Font.PLAIN,12));
  116. Count.setText("游戲規則:[請玩家仔細閱讀]" +
  117. "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低於0分時,玩家輸;" +
  118. "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
  119. "\n(3)游戲過程中,玩家可以刷新撲克牌,但每刷新一次都會扣3分;"+
  120. "\n(4)玩家將四張撲克牌,用+、-、*、/及適當的括號組合起來,並把組合的表達式【用英文輸入法】填到輸入框裡面【注意每張紙牌只可以使用一次】;"+
  121. "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數學規律,及是否為游戲顯示的四張撲克牌的上的數字;"+
  122. "\n(6)如果輸入合法,將系統將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;" +
  123. "\n(7)若玩家在1分30秒後才算出答案,則得4分,有鬼得8分,錯誤扣2分;"
  124. );
  125. count=43;//初始積分40
  126. new MasgDlg(this,"對不起,挑戰失敗!重新游戲請按【確定】,退出游戲請按【退出】");
  127. }
  128. else{
  129. for(int i=0;i<4;i++)
  130. myStatus[i]+=different[i];
  131. NewPanel(myStatus,mystatus);//顯示生成的四張撲克牌
  132. for(int i=0;i<4;i++){
  133. myStatus[i]-=different[i];
  134. if(different[i]==4)//雙倍加分條件,遇鬼
  135. addscore=true;
  136. }
  137. }
  138. }catch(Exception e1){
  139. }
  140. }
  141. //按下確定按鈕
  142. else if (e.getActionCommand().equals("ok")){
  143. try{float result=calculateString(txtFIEld.getText().trim());
  144. if(result==-1f){//輸入不合法,或者沒有輸入正確的數字
  145. txtFIEld.requestFocus();
  146. new MsgDlg("您輸入的表達式不合法或你使用的數字不是撲克牌上的數字,請重新輸入!",this);
  147. }else if(result!=24f){//輸入合法,但計算結果不是24
  148. timeshow.usedTime-=8%60;//減去輸入時間
  149. count-=2; //錯誤扣2分
  150. if(count<0){ //判斷積分是否小於0
  151. timeshow.timer.stop();
  152. timeshow.usedTime=0;
  153. timeshow.timeText.setText("0分0秒");
  154. for(int i=0;i<4;i++){//返回初始界面
  155. myStatus[i]=0f;
  156. mystatus[i]='A';
  157. }
  158. NewPanel(myStatus,mystatus);
  159. Buttompnl.remove(btnOk);
  160. txtFIEld.setText("");
  161. Count.setFont(new Font("Dialog",Font.PLAIN,12));
  162. Count.setText("游戲規則:[請玩家仔細閱讀]" +
  163. "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低於0分時,玩家輸;" +
  164. "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
  165. "\n(3)游戲過程中,玩家可以刷新撲克牌,但每刷新一次都會扣3分;"+
  166. "\n(4)玩家將四張撲克牌,用+、-、*、/及適當的括號組合起來,並把組合的表達式【用英文輸入法】填到輸入框裡面【注意每張紙牌只可以使用一次】;"+
  167. "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數學規律,及是否為游戲顯示的四張撲克牌的上的數字;"+
  168. "\n(6)如果輸入合法,將系統將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;" +
  169. "\n(7)若玩家在1分30秒才算出答案,則得4分,有鬼得8分,錯誤扣2分;"
  170. );
  171. count=43;
  172. new MasgDlg(this,"對不起,挑戰失敗!重新游戲請按【確定】,退出游戲請按【退出】");
  173. }
  174. else//輸出用戶所輸入的表達式的值
  175. {
  176. Count.setText("\n您目前的積分是:"+count+"\n對不起,您輸入的表達式的值是"+result+",扣除2分,請重新輸入!");
  177. }
  178. }else if(result==24f){//輸入正確,得到24
  179. timeshow.usedTime-=8%60;//減去輸入時間
  180. if(addscore){//遇鬼,雙倍積分
  181. addscore=false;
  182. if(timeshow.usedTime>90){//遇鬼,超時加分方法
  183. count+=8;
  184. Count.setText("\n您目前的積分是:"+count+"\n恭喜你,你的輸入正確!但超出1分30秒,獲得8分獎勵,請做下一道題"+
  185. "\n上一道題的系統答案是:"+c.outputs);
  186. }
  187. else{//遇鬼,正常加分方法
  188. count+=10;
  189. Count.setText("\n您目前的積分是:"+count+"\n恭喜你,你的輸入正確!獲得10分獎勵,請做下一道題" +
  190. "\n上一道題的系統答案是:"+c.outputs);
  191. }
  192. }
  193. else{//普通加分
  194. if(timeshow.usedTime/60>=2){//超時,普通加分
  195. count+=4;
  196. Count.setText("\n您目前的積分是:"+count+"\n恭喜你,你的輸入正確!但超出1分30秒,獲得4分獎勵,請做下一道題"+
  197. "\n上一道題的系統答案是:"+c.outputs);
  198. }
  199. else{//普通加分
  200. count+=5;
  201. Count.setText("\n您目前的積分是:"+count+"\n恭喜你,你的輸入正確!獲得5分獎勵,請做下一道題"+
  202. "\n上一道題的系統答案是:"+c.outputs);
  203. }
  204. }
  205. timeshow.usedTime = 0;
  206. txtFIEld.setText("");
  207. txtFIEld.requestFocus();
  208. if(count>=100){
  209. timeshow.timer.stop();
  210. timeshow.usedTime=0;
  211. timeshow.timeText.setText("0分0秒");
  212. for(int i=0;i<4;i++){
  213. myStatus[i]=0f;
  214. mystatus[i]='A';
  215. }
  216. NewPanel(myStatus,mystatus);
  217. Buttompnl.remove(btnOk);
  218. txtFIEld.setText("");
  219. Count.setFont(new Font("Dialog",Font.PLAIN,12));
  220. Count.setText("游戲規則:[請玩家仔細閱讀]" +
  221. "\n(1)點擊開始游戲進行游戲,玩家初始積分是40分,當玩家積分超過100分時,玩家贏,低於0分時,玩家輸;" +
  222. "\n(2)游戲開始時,會自動隨機生成一定可以通過四則運算得到24的四張撲克牌【J、Q、K、大小鬼記作10】;" +
  223. "\n(3)游戲過程中,玩家可以刷新撲克牌,但每刷新一次都會扣3分;"+
  224. "\n(4)玩家將四張撲克牌,用+、-、*、/及適當的括號組合起來,並把組合的表達式【用英文輸入法】填到輸入框裡面【注意每張紙牌只可以使用一次】;"+
  225. "\n(5)單擊確定按鈕,游戲將會判斷你輸入的表達式是否符合數學規律,及是否為游戲顯示的四張撲克牌的上的數字;"+
  226. "\n(6)如果輸入合法,將系統將計算玩家所輸入的表達式的值,如果正確則得5分,有鬼且正確加10分,錯誤扣2分;" +
  227. "\n(7)若玩家在1分30秒後才算出答案,則得4分,有鬼得8分,錯誤扣2分;"
  228. );
  229. count=43;
  230. new MasgDlg(this,"恭喜您,挑戰成功!重新游戲請按【確定】,退出游戲請按【退出】");
  231. }
  232. else{
  233. for(int i=0;i<4;i++){
  234. myStatus[i]=(float) ((int)(ran.nextFloat()*14+1));
  235. mystatus[i]=(char) ('A'+(int)(ran.nextFloat()*4));
  236. if(myStatus[i]>10f){
  237. different[i]=myStatus[i]-10f;
  238. myStatus[i]-=different[i];
  239. }
  240. else
  241. different[i]=0f;
  242. if(i==3&&!c.check(myStatus))
  243. i=2;
  244. }
  245. for(int i=0;i<4;i++)
  246. myStatus[i]+=different[i];
  247. NewPanel(myStatus,mystatus);
  248. for(int i=0;i<4;i++){
  249. myStatus[i]-=different[i];
  250. if(different[i]==4)
  251. addscore=true;
  252. }
  253. }
  254. }
  255. }catch(Exception e1){
  256. e1.printStackTrace();
  257. }
  258. }
  259. }
  260. private float calculateString(String str) {
  261. // 判斷玩家輸入的表達式的合法性
  262. int LBracketNum=0;//記錄左括號個數
  263. int RBracketNum=0;//記錄右括號個數
  264. int LBracketPla = 0;//記錄左括號位置和
  265. int RBracketPla = 0;//記錄右括號位置和
  266. int []LeftBracket=new int[10];//存放左括號的位置
  267. int []RightBracket=new int[10];//存放左括號的位置
  268. String tempStr,myString="";//臨時字符,數字字符
  269. int numberNo=0,OperatorNo=0;//數字個數,運算符個數
  270. String[]Operators=new String[4];//保存運算符
  271. for(int i=0;i<4;i++){
  272. Operators[i]="";//運算符數組初始化
  273. }
  274. for(int i=0;i<str.length();i++){
  275. tempStr=str.substring(i,i+1);//對玩家輸入的字符串逐個檢驗
  276. if(isNumber(tempStr)){//判斷是否數字
  277. myString+=tempStr;
  278. }else if(isOperator(tempStr)){//判斷是否運算符
  279. if(numberNo>=4||OperatorNo>=3)
  280. return -1f;
  281. try{
  282. numbers[numberNo]=(float) Integer.parseInt(myString);//對輸入的字符串中的數字,轉換成浮點型
  283. }catch(Exception e){
  284. }
  285. myString="";
  286. numberNo++;//記錄數字的個數
  287. operators[OperatorNo]=tempStr;
  288. OperatorNo++;//記錄運算符的個數
  289. }else if(isBracket(tempStr)){//判斷是否括號
  290. continue; //Do Nothing,跳出本次循環
  291. }
  292. else
  293. return -1f;
  294. }
  295. if(myString.length()!=0&&numberNo==3){
  296. try{
  297. numbers[numberNo]=Float.parseFloat(myString);
  298. }catch(Exception e){
  299. return -1f;
  300. }
  301. }
  302. numberNo=0;OperatorNo=0;myString="";
  303. for(int i=0;i<str.length();i++){
  304. tempStr=str.substring(i,i+1);
  305. if(isNumber(tempStr)){
  306. myString+=tempStr;
  307. if(numbers[numberNo]==Float.parseFloat(myString)){//判斷數字是否一樣,若一樣則記錄個數
  308. numberNo++;
  309. }
  310. continue;
  311. }
  312. else if(isOperator(tempStr)){
  313. OperatorNo++;
  314. myString="";
  315. continue;
  316. }
  317. else if(isBracket(tempStr)){
  318. myString="";
  319. if(tempStr.equals("(")){//記錄左括號個數
  320. LBracketNum ++;
  321. LeftBracket[LBracketNum-1]=numberNo+OperatorNo+1;//記錄每個左括號的位置
  322. LBracketPla +=numberNo+OperatorNo; //記錄所有左括號的位置和
  323. }
  324. else {//用同樣的方法處理右括號
  325. RBracketNum ++;
  326. RightBracket[RBracketNum-1]=numberNo+OperatorNo+1;
  327. RBracketPla +=numberNo+OperatorNo;
  328. }
  329. }
  330. }
  331. if(LBracketNum==RBracketNum&&LBracketNum==0)//判斷是否沒有左右括號
  332. {
  333. ;//Do Nothing
  334. }
  335. else if(LBracketNum!=RBracketNum||LBracketPla>=RBracketPla){//括號使用錯誤(不匹配)
  336. return -1f;
  337. }
  338. for(int i1=0;i1<LeftBracket.length&&LeftBracket[i1]!=0;i1++){
  339. if(LeftBracket[i1]%2==0||LeftBracket[i1]==7){//括號使用錯誤(左括號位置不正確)
  340. return -1f;
  341. }
  342. }
  343. for(int i1=0;i1<RightBracket.length&&LeftBracket[i1]!=0;i1++){
  344. if(RightBracket[i1]%2!=0||RightBracket[i1]==2){//括號使用錯誤(右括號位置不正確)
  345. return -1f;
  346. }
  347. }
  348. if(!isRightNum())//判斷用戶輸入的數字是否為撲克牌上的數字
  349. return -1f;
  350. //計算用戶輸入的表達式的值
  351. else
  352. {
  353. float result=c.string_float(str);
  354. return result;
  355. }
  356. }
  357. private boolean isBracket(String str) {//判斷是否為括號的方法
  358. if(str.equals("(")||str.equals(")")){
  359. return true;
  360. }else
  361. return false;
  362. }
  363. private boolean isNumber(String str) {//判斷是否為數字的方法
  364. if(str.equals("0")||str.equals("1")||str.equals("2")||str.equals("3")
  365. ||str.equals("4")||str.equals("5")||str.equals("6")||str.equals("7")
  366. ||str.equals("8")||str.equals("9")){
  367. return true;
  368. }
  369. else
  370. return false;
  371. }
  372. private boolean isOperator(String str) {//判斷是否為運算符的方法
  373. if(str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")){
  374. return true;
  375. }
  376. else
  377. return false;
  378. }
  379. private boolean isRightNum(){//判斷表達式的數字就是撲克牌上的數字
  380. float tempStatus[]=new float[4];
  381. for(int i=0;i<4;i++){
  382. tempStatus[i]=myStatus[i];
  383. }
  384. for(int i=0;i<4;i++){
  385. int j=0;
  386. boolean existed=false;
  387. while(j<4&&!existed){
  388. if(tempStatus[j]==numbers[i]){
  389. tempStatus[j]=-1f;
  390. existed=true;
  391. }
  392. j++;
  393. }
  394. if(!existed)
  395. return false;
  396. }
  397. return true;
  398. }
  399. private void NewPanel(float[] a,char[] Tempb){//撲克牌面板
  400. pokerPanel.setLayout(new FlowLayout());
  401. int []Tempa=new int[4];
  402. for(int i=0;i<4;i++){
  403. Tempa[i]=(int)a[i];
  404. System.out.print(Tempa[i]+""+Tempb[i]+" ");
  405. }
  406. System.out.println();
  407. //裝載圖片
  408. URL url1=getClass().getResource(Tempa[0]+""+Tempb[0]+".jpg");
  409. URL url2=getClass().getResource(Tempa[1]+""+Tempb[1]+".jpg");
  410. URL url3=getClass().getResource(Tempa[2]+""+Tempb[2]+".jpg");
  411. URL url4=getClass().getResource(Tempa[3]+""+Tempb[3]+".jpg");
  412. poker1.setIcon(new ImageIcon(url1));
  413. poker2.setIcon(new ImageIcon(url2));
  414. poker3.setIcon(new ImageIcon(url3));
  415. poker4.setIcon(new ImageIcon(url4));
  416. poker1.setBackground(new Color(18,152,57));
  417. poker2.setBackground(new Color(18,152,57));
  418. poker3.setBackground(new Color(18,152,57));
  419. poker4.setBackground(new Color(18,152,57));
  420. frame.setSize(650, 480);
  421. pokerPanel.setBackground(new Color(18,132,57));
  422. Buttompnl.setBackground(new Color(18,132,57));
  423. frame.setLocation((screen.width-frame.getSize().width)/2, (screen.height-frame.getSize().height)/2);
  424. frame.setVisible(true);
  425. frame.setResizable(false);
  426. frame.addWindowListener(new WindowAdapter(){//設置窗口關閉監聽器
  427. public void windowClosing(WindowEvent e){
  428. System.exit(0);
  429. }
  430. });
  431. }
  432. public static void main(String[] args){//程序入口,主函數調用
  433. Calculate24 Start=new Calculate24();//實例化為對象
  434. float []a=new float[4];
  435. char []b=new char [4];
  436. for(int i=0;i<4;i++)
  437. b[i]='A';
  438. Start.NewPanel(a,b);
  439. }
  440. }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved