筛盅历险记

设计思路

一开始我用java语言写了一个筛子sifter类,从设计思路上想还要啥自行车,哦不,筛子盅啊。直接在筛子上写个方法,从控制台读取输入的筛子数量,在筛子类里面直接发布GUI多美滋滋啊,后来一想,这并不是对筛子类的封装,一个类把所有的问题全部解决是很简单,在目前的软件规模上也是要比多写很多类要方便很多,但是如果今后所有软件都这么写,不仅别人看不懂造成很多麻烦,日后自己检查的时候也可能弄不懂调用顺序造成混乱。所以我决定规划出一个筛盅,进行逐层调用,理清结构才是最好的方法。也满足封装的要求,实现了差点没有的筛盅。

设计实现

1.sifter类为经过简化的筛子,其中里面只是单纯的筛子有数值int vlaue 和方法getValue()

2.sifterCup类为重新构造的筛盅,通过对筛子的调用和新的方法howMany()确定多少个筛子被使用

3.shfterFrame类为有余力瞎写的图形化界面,对sifterCup类进行调用实现筛子的动画,使筛盅更加丰富。

代码粘贴

1.sifter筛子类

 1 import java.util.*;
 2 
 3  
 4  
 5  public class Sifter{
 6       public int value = 0;
 7      
 8     
 9      public static void getValue(Sifter S){
10           S.value = (int)(1+Math.random()*6);
11      }
12  }     

2.sifterCup筛盅类

 

 1 import java.util.Scanner;
 2 
 3 public class SifterCup {
 4     int amount = 0;
 5     int sum = 0;
 6 
 7 
 8     public void howMany(){
 9         Sifter sifter = new Sifter();
10         System.out.println("请输入想要使用筛子的数量:");
11         Scanner sc = new Scanner(System.in);
12         amount = sc.nextInt();
13         Sifter s1 = new Sifter();
14         for(int i = 1; i <= amount; i = i+1){
15             s1.getValue(s1);
16             System.out.println(s1.value);
17             sum = sum + s1.value;
18         }
19         System.out.println("最终您roll出的点数为:" + sum);
20     
21     }
22         
23     
24 
25 public static void main(String[] args){ 26 SifterCup cup1 = new SifterCup(); 27 cup1.howMany(); 28 } 29 30 }

 

 3.sifterFrame筛子图形化界面

 

 1 import javax.swing.JFrame;
 2 import java.awt.Event;
 3 import java.awt.event.ActionEvent;
 4 import java.awt.event.ActionListener;
 5 
 6 import javax.swing.ImageIcon;
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9 import javax.swing.JLabel;
10 import javax.swing.JPanel;
11 import javax.swing.JTextArea;
12 import javax.swing.border.EmptyBorder;
13 import javax.swing.event.CaretEvent;
14 import javax.swing.event.CaretListener;
15 
16 public class SifterFrame extends JFrame{
17     
18     public void launch(){
19         this.setTitle("筛子传奇");
20         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
21         this.setExtendedState(JFrame.MAXIMIZED_BOTH);
22         this.setBounds(100,100,100,100);
23         this.setVisible(true);
24      }
25 
26     public static void main(String[] args) {
27         
28         SifterFrame sifterFrame = new SifterFrame();
29          JPanel sifterPanel = new JPanel();    
30         JLabel sifterLabel = new JLabel();
31         ImageIcon rotate = new ImageIcon("sifter.gif");
32         sifterLabel.setIcon(rotate);
33         sifterPanel.add(sifterLabel);
34         sifterFrame.getContentPane().add(sifterPanel);
35         sifterPanel.setBorder(new EmptyBorder(5,5,5,5));
36         sifterPanel.setLayout(null);
37         sifterFrame.launch();
38         
39     }
40     
41 }

测试运行

小节

 险些没有的筛盅功能的实现,确定了封装的实现。进一步的继承和多态有待于改进,新的GUI如果有精力就继续做,没有的话说不定就太监了。新的功能和更复杂的代码有待于学习,基本上这篇博客就是为了完成封装和面向对象而写。

posted on 2017-10-08 15:22  稽美大学小学生  阅读(467)  评论(1编辑  收藏  举报