全体起立

课程理解

在上课之后对类的理解和用处有了更多的理解,知道类的三个基本组件是类名、属性、方法,以及类与类之间有着六种关系泛化,实现,依赖,关联,聚合,组合,其中依赖是运用最广的。在这一次作业上运用之后感觉受益匪浅,有了类图在写代码的时候逻辑比较不会混乱,知道这一步以及下一步要做些什么,和以前像无头蚂蚁一样完全不同。

设计实现

首先在控制台实现是三个类:Dice,Gift,Test,基于面向对象将Gift分开写,Dice类、Gift类与Test类之间是继承关系。后面添加了GUI类实现图形化界面。

代码说明

码云地址:https://gitee.com/cyx5369/GuZi

Dice.java

import java.util.Random;
import java.util.Scanner;

public class Dice {
private int faceValue;
private int maxValue;
public void roll() {
this.faceValue = (int) (Math.random()*maxValue+1);
}

public int getfaceValue(){
return faceValue;
}

public void setMaxValue(int maxValue){
this.maxValue = maxValue;
}

public void outValue(){
System.out.println(faceValue);
}
}

Gift.java
import java.util.Random;
public class gift {
private int num;

public void rollGift() {
this.num = (int) (Math.random()*4+1);
}

public int getNum(){
return num;
}
}

Test.java

import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test {
public String j;
public String s;
public static void main(String[] args) throws FileNotFoundException{
GUI one = new GUI();
one.launchGui();
int flag=0;
Scanner input = new Scanner(System.in);
Test test = new Test();
System.out.println(test.Student());
test.question();
flag = input.nextInt();
if(flag == 1){
System.out.println(test.gift());
}else {System.out.println("答错啦!");} //1为正确,其他数字为错误。
}

public String Student(){
Dice a = new Dice();
a.setMaxValue(40);
a.roll();
s= "请"+a.getfaceValue()+"号同学回答问题";
return s;
}//选择学生

public void question(){
Dice q =new Dice();
q.setMaxValue(3);
q.roll();
if(q.getfaceValue() == 1){
System.out.println("如果我和你妈同时掉河里你救谁?");
}
else if(q.getfaceValue() == 2){
System.out.println("你妈知道你是傻子吗");
}
else if(q.getfaceValue() == 3){
System.out.println("今天看十九大的直播了吗");
}
}//选择问题

public String gift(){

gift g = new gift();
g.rollGift();
if(g.getNum()1){
j= "奖你一个平底锅";
}
else if(g.getNum()
2){
j="奖你一把大砍刀";
}
else if(g.getNum()3){
j="奖你一把98k";
}
else if(g.getNum()
4){
j="奖你10Q币";
}
return j;
}
}//选择奖励

GUI.java

import java.awt.;
import java.awt.event.
;
import javax.swing.;
import javax.swing.event.
;
import java.util.*;
import java.util.List;

public class GUI implements MouseMotionListener, MouseListener {
private JFrame f;
private JButton b1;
private JButton b2;
private TextField inf;
private TextField ouf;
private JLabel l;
public String fs;
public String el;
public String i;

public GUI () {
// 构造Gui
f = new JFrame("提问");
b1 = new JButton("抽礼物");
b2 = new JButton("抽同学");
inf = new TextField("",30);
ouf = new TextField("",50);
l = new JLabel(" 请单击");
}

public void launchGui() throws java.io.FileNotFoundException {
f.add(b1,BorderLayout.EAST);
f.add(b2,BorderLayout.WEST);
f.add(inf, BorderLayout.NORTH);
f.add(ouf, BorderLayout.SOUTH);
f.add(l, BorderLayout.CENTER);
// 添加监听
b1.addMouseMotionListener(this);
b1.addMouseListener(this);
b2.addMouseMotionListener(this);
b2.addMouseListener(this);
// 设定大小尺寸
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭构架时退出运行
f.setSize(600, 500);
f.setVisible(true);
//分别对按钮b1,b2创建监听
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = "已完成" ;

b1.setText(s);
fs = inf.getText();
ouf.setText(i);
Test g = new Test();
i = g.gift();
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = "已完成" ;
b2.setText(s);
fs = inf.getText();
ouf.setText(i);
Test g = new Test();
i = g.Student();
}
});
}

// 建立鼠标点击监听
public void mouseClicked(MouseEvent e) {
fs = inf.getText();
ouf.setText(i);
}

/* private static class AlphaComparator implements Comparator {
public int compare(Object e1, Object e2) {
String word1 = (String) ((Map.Entry) e1).getKey();
String word2 = (String) ((Map.Entry) e2).getKey();
return word1.compareTo(word2);
}
}

private static class FreqComparator implements Comparator {
public int compare(Object e1, Object e2) {
Integer freq1 = (Integer) ((Map.Entry) e1).getValue();
Integer freq2 = (Integer) ((Map.Entry) e2).getValue();
return freq2.compareTo(freq1);
}
} */

// 除了需使用的监听方法,都必须写入
public void mouseMoved(MouseEvent e) { }
public void mouseDragged(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }

}

测试运行

控制台

界面


小结

这一次的作业控制台方面不是很难,花了30分钟左右就完成了。但在GUI方面因为时间紧迫(拖延症)在最后才决定用上学期java写过的GUI带入,没有实现将骰子具体化但是也将将完成了作业的目标。

posted @ 2017-10-23 13:36  ChenMouMou  阅读(295)  评论(0)    收藏  举报