博客二
码云地址:https://gitee.com/sfr123/gold_point/blob/master/UserLogIn.java
博客一连接:https://i.cnblogs.com/EditPosts.aspx?postid=10136689&update=1
团队成员:
史可新16012018 尚凤茹16012015 徐佳韦16012017 刘晓彤16012023
团队照片:
贡献分: 史可新:9分 尚凤茹:10分 徐佳韦 :7分 刘晓彤:8分
运行截图:
主要代码及其解释:
1.界面代码:
import javax.swing.JFrame;//框架 import javax.swing.JPanel;//面板 import javax.swing.JButton;//按钮 import javax.swing.JLabel;//标签 import javax.swing.JTextField;//文本框 import java.awt.Font;//字体 import java.awt.Color;//颜色 import javax.swing.JPasswordField;//密码框 import java.awt.event.ActionListener;//事件监听 import java.awt.event.ActionEvent;//事件处理 import javax.swing.JOptionPane;//消息窗口 public class UserLogIn extends JFrame{ public JPanel pnluser; public JLabel lbluserLogIn; public JLabel lbluserName; public JLabel lbluserPWD; public JTextField txtName; public JPasswordField pwdPwd; public JButton btnSub; public JButton btnReset; public UserLogIn(){ pnluser = new JPanel(); lbluserLogIn = new JLabel(); lbluserName = new JLabel(); lbluserPWD = new JLabel(); txtName = new JTextField(); pwdPwd = new JPasswordField(); btnSub = new JButton(); btnReset = new JButton(); userInit(); } public void userInit(){ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭框架的同时结束程序 this.setSize(300,200);//设置框架大小为长300,宽200 this.setResizable(false);//设置框架不可以改变大小 this.setTitle("用户登录");//设置框架标题 this.pnluser.setLayout(null);//设置面板布局管理 this.pnluser.setBackground(Color.cyan);//设置面板背景颜色 this.lbluserLogIn.setText("用户登录");//设置标签标题 this.lbluserLogIn.setFont(new Font("宋体",Font.BOLD | Font.ITALIC,14));//设置标签字体 this.lbluserLogIn.setForeground(Color.RED);//设置标签字体颜色 this.lbluserName.setText("用户名:"); this.lbluserPWD.setText("密 码:"); this.btnSub.setText("登录"); this.btnReset.setText("注册"); this.lbluserLogIn.setBounds(120,15,60,20);//设置标签x坐标120,y坐标15,长60,宽20 this.lbluserName.setBounds(50,55,60,20); this.lbluserPWD.setBounds(50,85,60,25); this.txtName.setBounds(110,55,120,20); this.pwdPwd.setBounds(110,85,120,20); this.btnSub.setBounds(85,120,60,20); this.btnSub.addActionListener(new ActionListener()//匿名类实现ActionListener接口 { public void actionPerformed(ActionEvent e){ btnsub_ActionEvent(e); } } ); this.btnReset.setBounds(155,120,60,20); this.btnReset.addActionListener(new ActionListener()//匿名类实现ActionListener接口 { public void actionPerformed(ActionEvent e){ btnreset_ActionEvent(e); } } ); this.pnluser.add(lbluserLogIn);//加载标签到面板 this.pnluser.add(lbluserName); this.pnluser.add(lbluserPWD); this.pnluser.add(txtName); this.pnluser.add(pwdPwd); this.pnluser.add(btnSub); this.pnluser.add(btnReset); this.add(pnluser);//加载面板到框架 this.setVisible(true);//设置框架可显示 } public void btnsub_ActionEvent(ActionEvent e){ String name = txtName.getText(); String pwd = String.valueOf(pwdPwd.getPassword()); if(name.equals("")){ JOptionPane.showMessageDialog(null,"账号不能为空","错误",JOptionPane.ERROR_MESSAGE); return; }else if (pwd.equals("")){ JOptionPane.showMessageDialog(null,"密码不能为空","错误",JOptionPane.ERROR_MESSAGE); return; }else if(true){ this.dispose(); }else{ JOptionPane.showMessageDialog(null,"账号或密码错误","错误",JOptionPane.ERROR_MESSAGE); return; } } public void btnreset_ActionEvent(ActionEvent e){ txtName.setText(""); pwdPwd.setText(""); } public static void main(String[] args){ new UserLogIn(); } }
2.游戏步骤:
第一步:游戏开始,进入循环
while (true) { System.err.println("1、开始游戏"); Scanner scanner=new Scanner(System.in); int choice=scanner.nextInt(); switch (choice) { case 1: welcome(); break; default: break; } }
第二步:设置私有变量,输入玩家人数
private static void welcome() { System.out.println("游戏默认初试玩家的分数为100"); System.out.print("请输入游戏人数: "); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); creatPlayer(n); }
第三步:创建对象数组,异常处理
private static void creatPlayer(int n) { persons = new Person[n]; for (int i = 0; i < persons.length; i++) { persons[i] = new Person(); } for (int i = 0; i < n; i++) { Scanner scanner = new Scanner(System.in); int temp = 0; temp = i + 1; System.out.print("请输入第" + temp + "个玩家的姓名:"); persons[i].setName(scanner.next()); persons[i].setScore(SCORE_START); } System.out.println("****输入完成****"); try { playGame(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
第四步:输入数值,并计算出G值
for (int i = 0; i < persons.length; i++) { Scanner scanner = new Scanner(System.in); System.out.print("请" + persons[i].getName() + "输入数值:"); persons[i].setNum(scanner.nextInt()); } // 获取G值 int numG = getG(); int recordMax = 0; int max = Math.abs(persons[0].getNum() - numG); for (int i = 0; i < persons.length; i++) { if (max < (Math.abs(persons[i].getNum() - numG))) { max = Math.abs(persons[i].getNum() - numG); recordMax = i; } } int min = Math.abs(persons[0].getNum() - numG); int recordMin = 0; for (int i = 0; i < persons.length; i++) { if (min > Math.abs(persons[i].getNum() - numG)) { min = Math.abs(persons[i].getNum() - numG); recordMin = i; } }
第五步:用for循环语句,输出最终结果
private static void showMessage() { System.out.println(); System.out.println("姓名" + "\t" + "输入的数"+"\t"+"分数"); for (int i = 0; i < persons.length; i++) { System.out.println(persons[i].getName() + "\t" + persons[i].getNum()+"\t"+persons[i].getScore()); } System.out.println(); } }
小结感受:本次实训二由我们四个完成,深刻地感受到了团队中团员之间共同努力有多么重要,每个人的分工明确,以及每一项任务的衔接也很重要,当遇到困难了,大家也可以四个人共同想办法去解决问题,慢慢地也逐渐培养出来了默契,1+1+1+1>4.当然了,我们每个人都可以在这一次的小实训中发现每个人的小缺点,都不是很完美,大家彼此互补,完成共同的目标--实训二。
对于这次任务,在实训一的基础上,将代码变得更完整,将程序变得更完善,在这个过程中,我们几个也确确实实遇到了很多瓶颈,有些时候没有思路,没有办法将任务进行下去,这也体现了我们对java各种知识点的不扎实。并且我们没有将黄金点的程序跟界面显示更好地结合到一起,没有学会打包让整个班级可以一起使用这个游戏的小程序,这是我们这次实训最关键的两个问题。
实训结束了我们也知道,我们做的不够好,有很多的地方想不到,做不明白,但是我们会用心地完成好这次实训。❤(* ̄︶ ̄*)❤