当前位置:   article > 正文

java课设——猜数字游戏_java设计猜数字游戏配合前端

java设计猜数字游戏配合前端

1.团队名称、团队成员任务分配

2项目简介

计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。排行榜存放到文件中。

3项目功能架构图

程序流程图

UML类图

4运行截图

开始界面

游戏界面

运行界面

排行榜.txt

5主要代码

主要流程

  1. import javax.swing.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. public class Guider {
  5. public static void main(String[] args) {
  6. JFrame frame = new JFrame("猜数字游戏");
  7. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  8. frame.setSize(500, 300);
  9. frame.setLocationRelativeTo(null);
  10. frame.setVisible(true);
  11. JPanel panel = new JPanel();
  12. panel.setLayout(null);
  13. frame.add(panel);
  14. JButton startBtn = new JButton("A 开始游戏");
  15. startBtn.setBounds(120, 100, 100, 30);
  16. panel.add(startBtn);
  17. JButton exitBtn = new JButton("B 开始游戏");
  18. exitBtn.setBounds(280, 100, 100, 30);
  19. panel.add(exitBtn);
  20. startBtn.addActionListener(new ActionListener() {
  21. @Override
  22. public void actionPerformed(ActionEvent e) {
  23. frame.dispose();
  24. new Main("A");
  25. }
  26. });
  27. exitBtn.addActionListener(new ActionListener() {
  28. @Override
  29. public void actionPerformed(ActionEvent e) {
  30. frame.dispose();
  31. new Main("B");
  32. }
  33. });
  34. }
  35. }

计算猜数次数,生成排行榜文件

  1. import javax.swing.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.io.*;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. public class Main {
  8. int count = 1;
  9. // 计时
  10. Date startTime = new Date();
  11. Main(String name) {
  12. JFrame frame = new JFrame("猜数字游戏");
  13. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14. frame.setSize(500, 300);
  15. frame.setLocationRelativeTo(null);
  16. frame.setVisible(true);
  17. JPanel panel = new JPanel();
  18. panel.setLayout(null);
  19. frame.add(panel);
  20. JLabel label = new JLabel("请输入一个1-100的数字");
  21. label.setBounds(180, 20, 200, 30);
  22. panel.add(label);
  23. JTextField textField = new JTextField();
  24. textField.setBounds(180, 60, 100, 30);
  25. panel.add(textField);
  26. JButton submitBtn = new JButton("提交");
  27. submitBtn.setBounds(180, 100, 100, 30);
  28. panel.add(submitBtn);
  29. JButton exitBtn = new JButton("退出游戏");
  30. exitBtn.setBounds(180, 140, 100, 30);
  31. panel.add(exitBtn);
  32. JLabel resultLabel = new JLabel();
  33. resultLabel.setBounds(180, 180, 200, 30);
  34. panel.add(resultLabel);
  35. int random = (int) (Math.random() * 100 + 1);
  36. System.out.println(random);
  37. submitBtn.addActionListener(new ActionListener() {
  38. @Override
  39. public void actionPerformed(ActionEvent e) {
  40. // 开始计时
  41. if (count == 1) {
  42. startTime = new Date();
  43. }
  44. String text = textField.getText();
  45. int num = Integer.parseInt(text);
  46. if (num > random) {
  47. resultLabel.setText("第" + count + "次回答,猜大了");
  48. } else if (num < random) {
  49. resultLabel.setText("第" + count + "次回答,猜小了");
  50. } else {
  51. resultLabel.setText("第" + count + "次回答,猜对了");
  52. // 结束计时
  53. Date endTime = new Date();
  54. long time = endTime.getTime() - startTime.getTime();
  55. JOptionPane.showMessageDialog(null, "恭喜你,猜对了!用时" + time / 1000 + "秒");
  56. pushRankingList(name, time / 1000, count);
  57. }
  58. count++;
  59. }
  60. });
  61. exitBtn.addActionListener(new ActionListener() {
  62. @Override
  63. public void actionPerformed(ActionEvent e) {
  64. frame.dispose();
  65. new Guider().main(null);
  66. }
  67. });
  68. }
  69. // 生成排行榜文件
  70. public void pushRankingList(String name, long time, int count) {
  71. // 创建文件
  72. File file = new File("排行榜.txt");
  73. if (!file.exists()) {
  74. try {
  75. file.createNewFile();
  76. FileWriter fw = new FileWriter(file, true);
  77. BufferedWriter bw = new BufferedWriter(fw);
  78. bw.write("排名-姓名-用时(秒)-次数\n");
  79. bw.close();
  80. fw.close();
  81. } catch (Exception e) {
  82. e.printStackTrace();
  83. }
  84. }
  85. try {
  86. // 获取行数
  87. FileReader fr = new FileReader(file);
  88. BufferedReader br = new BufferedReader(fr);
  89. int line = 0;
  90. while (br.readLine() != null) {
  91. line++;
  92. }
  93. br.close();
  94. fr.close();
  95. FileWriter fw = new FileWriter(file, true);
  96. BufferedWriter bw = new BufferedWriter(fw);
  97. bw.write(line + "-" + name + "-" + time + "-" + count + "次\n");
  98. bw.close();
  99. fw.close();
  100. } catch (Exception e) {
  101. e.printStackTrace();
  102. }
  103. sortRankinList();
  104. }
  105. // 给排行榜排序
  106. public void sortRankinList() {
  107. // 读取文件
  108. ArrayList<String> list = new ArrayList<>();
  109. File file = new File("排行榜.txt");
  110. int lineNumber = 1;
  111. try {
  112. FileReader fr = new FileReader(file);
  113. BufferedReader br = new BufferedReader(fr);
  114. String line = br.readLine();
  115. while (line != null) {
  116. if (lineNumber > 1 && !line.isEmpty()) {
  117. list.add(line);
  118. }
  119. line = br.readLine();
  120. lineNumber++;
  121. }
  122. br.close();
  123. fr.close();
  124. } catch (Exception e) {
  125. e.printStackTrace();
  126. }
  127. // 给排行榜排序
  128. list.sort((o1, o2) -> {
  129. String[] split1 = o1.split("-");
  130. String[] split2 = o2.split("-");
  131. return Integer.parseInt(split1[2]) - Integer.parseInt(split2[2]);
  132. });
  133. // 重新写入文件
  134. try {
  135. FileWriter fw = new FileWriter(file);
  136. BufferedWriter bw = new BufferedWriter(fw);
  137. bw.write("排名-姓名-用时(秒)-次数\n");
  138. for (int i = 0; i < list.size(); i++) {
  139. String name = list.get(i).split("-")[1];
  140. String time = list.get(i).split("-")[2];
  141. String count = list.get(i).split("-")[3];
  142. bw.write((i + 1) + "-" + name + "-" + time + "-" + count + "\n");
  143. }
  144. bw.close();
  145. fw.close();
  146. } catch (Exception e) {
  147. e.printStackTrace();
  148. }
  149. }
  150. }

6课程设计感想

还有很多难的内容实现不了,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/233978
推荐阅读
相关标签
  

闽ICP备14008679号