当前位置:   article > 正文

Java小游戏-猜数字_编写猜数字游戏程序,并输出一共猜了多少次?

编写猜数字游戏程序,并输出一共猜了多少次?

 

随着现代科学技术的持续发展,互联网与计算机等技术被广泛应用到人们的日常生活、工作中。智能化技术的的发展推动了相应软件的开发,软件开发编程语言种类众多,其中使用范围比较广泛的是Java编程语言,为此,以Java编程语言为例,分析了其在计算机软件中的开发应用

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承指针等概念,因此Java语言具有功能强大和简单易用两个特征。  

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式健壮性安全性、平台独立与可移植性、多线程、动态性等特点Java可以编写桌面应用程序Web应用程序分布式系统嵌入式系统应用程序等。

本文采用Java语言实现了一个猜数字小游戏此款游戏中用户进行猜数字游戏,系统根据用户键入的数值进行判断并给出判断是大了还是小了,猜对即提示用户,键入的数值不符合要求系统也会给于提示。最后给出随机数值及猜数所用次数和时间。

连接数据库可查看用户猜题信息。

关键词  Java编程语言 软件开发 猜数游戏 数据库

第一章 概述

1.1 引言 

猜数游戏是Java语言学习过程中常见的小游戏,其可以锻炼Java初学者的编程思维,增强动手能力,包含Java知识中的输入输出语句、随机函数、循环语句again、判断选择语句if、多种运算符、类和对象的创建、类的方法及构造方法、和接口及继承。

1.1.1Java特点

1、Java语言是简单的,Java语言的语法与c语言和c++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别的,Java语言不使用指针,并提供了自动的废料收集,使程序员不必为内存管理而担忧。

2、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。

3、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以放恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制,如分配不同的名字空间以防代替本地的同名类、字节代码检查,并提供安全管理机制让Java应用设置安全哨兵。

4、Java语言是体系结构中立的。Java程序在Java平台上被编译为体系结构中立的字节代码格式,然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的开发。

5、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java海洋人规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的。

6、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在连接阶段被载入到运行环境中。

1.1.2Java平台介绍

    J2SE:称为Java标准版或Java标准平台,J2SE提供了标准的SDK开发平台。利用该平台乐意开发Java桌面应用程序和低端的服务器应用程序。

J2ME是Java 2的一个组成部分,它与J2SEJ2EE并称。根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。

J2EE:一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。

1.2 系统目标

计算机产生随机数,用户需输入用户名进行游戏,猜中即胜,猜不中会提示猜大了还是猜小了,继续踩,直至猜到,给出所用时间和次数。连接数据库可查看历史游戏记录。

猜数游戏程序总体设计

2.1 功能设计

    计算机产生随机数,用户可以用户名进行游戏,猜中即胜,猜不中会提示猜大了还是猜小了,继续猜,直至猜到,给出所用时间和次数。

2.2 系统功能设计

2.2.1用户名功能

用户可以输入名字进行游戏。

详细代码:JLabel label2 = new JLabel("请输入你的名字");

label2.setFont(new Font("华彩文云",Font.BOLD,16));

label2.setBounds(41,13,119,15);

contentPane.add(label2);

2.2.2排行榜功能

点击界面上的排行榜按钮,可以查看历史游戏记录。

详细代码:JButton button_2 = new JButton("排行榜");

button_2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Table t = new Table();

t.show();

}

});//添加监听事件,点出排行榜界面

2.2.3游戏功能

     

    游戏中会提示用户猜数字的次数和游戏进行时间。

   

章 详细设计

3.1开发工具的选用及其介绍

IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构JavaEE支持、各类版本工具(gitsvn等)、JUnitCVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 

3.2 详细模块设计

3.2.1图形化界面的显示

创建图形界面的步骤

  1. 导入Swing包
  2. 选择界面风格
  3. 设置顶层容器
  4. 设置标签和按钮
  5. 将组件放到容器上
  6. 为组件增加边框
  7. 处理事件
  8. 辅组技术支持

3.2.2界面设计

本程序包含一个操作界面,它是由Swing组件进行编写的。Swing实在AWT的基础上构建的一套新的图形界面系统,它提供了AWT所能提供的所有功能,并且用纯粹的Java代码对AWT功能进行了大幅度的扩充。Swing是基于AWT的Java程序,其运行速度比AWT慢,但其功能要比AWT强大的多,而且在基于普通PC或者工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素,所以我决定使用Swing编写本程序,以牺牲比AWT慢的可以忽略不计的速度来实现程序的功能。

程序源码

Guess.java

  1. import javax.swing.Action;
  2. import javax.swing.JButton;
  3. import javax.swing.JFrame;
  4. import javax.swing.JLabel;
  5. import javax.swing.JPanel;
  6. import javax.swing.JTextField;
  7. import javax.swing.border.EmptyBorder;
  8. import java.awt.Color;
  9. import java.awt.Font;
  10. import java.awt.event.*;
  11. import java.sql.Connection;
  12. import java.sql.DriverManager;
  13. import java.sql.SQLException;
  14. import java.sql.Statement;
  15. import java.util.Random;
  16. public class Guess extends JFrame{
  17. private JPanel contentPane;
  18. private JTextField textField;
  19. private int number=0;
  20. private int guessNum=0;
  21. int count=0;
  22. long startTime=0;
  23. long endTime=0;
  24. int time;
  25. private JTextField textField_1;
  26. public static void main (String args[]) {
  27. Guess frame = new Guess();
  28. frame.setVisible(true);//显示图形化界面
  29. }
  30. public Guess() {
  31. setTitle("猜数游戏");
  32. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  33. setBounds(100,100,450,300);
  34. contentPane = new JPanel();
  35. contentPane.setBackground(Color.ORANGE);
  36. contentPane.setBorder(new EmptyBorder(5,5,5,5));
  37. setContentPane(contentPane);
  38. contentPane.setLayout(null);
  39. textField = new JTextField();
  40. textField.setBounds(170,45,83,27);
  41. contentPane.add(textField);
  42. textField.setColumns(10);
  43. JButton button = new JButton("猜");
  44. button.setForeground(Color.BLACK);
  45. button.setFont(new Font("幼圆",Font.BOLD,20));
  46. button.setBounds(157,82,108,59);
  47. contentPane.add(button);
  48. JLabel label = new JLabel("请输入所猜数字");
  49. label.setFont(new Font("华彩文云",Font.BOLD,16));
  50. label.setBounds(41,51,119,15);
  51. contentPane.add(label);
  52. JLabel label1 = new JLabel("");
  53. label1.setFont(new Font("华彩文云",Font.BOLD,16));
  54. label1.setBounds(69,151,355,53);
  55. contentPane.add(label1);
  56. JLabel label2 = new JLabel("请输入你的名字");
  57. label2.setFont(new Font("华彩文云",Font.BOLD,16));
  58. label2.setBounds(41,13,119,15);
  59. contentPane.add(label2);
  60. textField_1 = new JTextField();
  61. textField_1.setBounds(170,7,83,27);
  62. contentPane.add(textField_1);
  63. textField_1.setColumns(10);
  64. JLabel label3 = new JLabel("");
  65. label3.setFont(new Font("华彩文云",Font.BOLD,16));
  66. label3.setBounds(142,214,144,37);
  67. contentPane.add(label3);
  68. JButton button_1 = new JButton("重新开始");
  69. button_1.setBounds(341,238,93,23);
  70. contentPane.add(button_1);
  71. JButton button_2 = new JButton("排行榜");
  72. button_2.addActionListener(new ActionListener() {
  73. public void actionPerformed(ActionEvent e) {
  74. Table t = new Table();
  75. t.show();
  76. }
  77. });
  78. button_2.setBounds(341,0,93,23);
  79. contentPane.add(button_2);
  80. Random random = new Random();//产生随机数
  81. startTime=System.currentTimeMillis();
  82. number = random.nextInt(100);
  83. button.addActionListener(new ActionListener() {
  84. public void actionPerformed(ActionEvent e) {
  85. guessNum = Integer.parseInt(textField.getText());
  86. String name = textField_1.getText();
  87. if(guessNum<=100&&guessNum>=0) {
  88. if(guessNum>number) {
  89. textField.setText("");
  90. label1.setText(name+"猜的有点大啦");
  91. count++;
  92. }
  93. if(guessNum<number) {
  94. textField.setText("");
  95. label1.setText(name+"猜的有点小啦");
  96. count++;
  97. }
  98. if(guessNum == number) {
  99. textField.setText("");
  100. count++;
  101. endTime = System.currentTimeMillis();
  102. time = (int)(endTime-startTime)/1000;
  103. label1.setText(name+"猜对啦!你一共猜了"+count+"次!");
  104. label3.setText("用时:"+time+"秒");
  105. try {
  106. Class.forName("com.mysql.jdbc.Driver");
  107. String ur1 = "jdbc:mysql://localhost:3306/keshe";
  108. String user = "root";
  109. String password = "123456";
  110. Connection conn = DriverManager.getConnection(ur1,user,password);
  111. Statement stmt = conn.createStatement();
  112. String sql = "insert into keshe.guessnum(name,count,time)values('"+name+"','"+count+"','"+time+"')";
  113. int count = stmt.executeUpdate(sql);
  114. }catch (ClassNotFoundException e1) {
  115. e1.printStackTrace();
  116. }catch (SQLException e1) {
  117. e1.printStackTrace();
  118. }
  119. }
  120. }else {
  121. textField.setText("");
  122. label1.setText("输入的值不合法!请重新输入");
  123. }
  124. }
  125. });
  126. button_1.addActionListener(new ActionListener() {
  127. public void actionPerformed(ActionEvent e) {
  128. number = random.nextInt(100);
  129. textField.setText("");
  130. label1.setText("");
  131. label3.setText("");
  132. count=0;
  133. startTime = System.currentTimeMillis();
  134. }
  135. });
  136. }
  137. }

Table.java

  1. import javax.swing.JFrame;
  2. import javax.swing.JPanel;
  3. import javax.swing.JScrollPane;
  4. import javax.swing.JTable;
  5. import java.awt.BorderLayout;
  6. import java.sql.Connection;
  7. import java.sql.DriverManager;
  8. import java.sql.ResultSet;
  9. import java.sql.SQLException;
  10. import java.sql.Statement;
  11. public class Table extends JFrame{
  12. public void show() {
  13. JPanel panel;
  14. JFrame frame=new JFrame("排行榜");
  15. frame.getContentPane().setLayout(new BorderLayout());
  16. panel = new JPanel();
  17. frame.getContentPane().add(panel,BorderLayout.CENTER);
  18. panel.setLayout(null);
  19. int count=0;
  20. Object[][]rowDate=new Object[100][3];
  21. String[] head = {"名字","所猜次数","时间"};
  22. JTable table = new JTable(rowDate,head);
  23. JScrollPane sp = new JScrollPane(table);
  24. frame.add(sp);
  25. frame.setSize(400,300);
  26. frame.setLocation(150,100);
  27. frame.setVisible(true);
  28. Connection con;
  29. String driver = "com.mysql.jdbc.Driver";
  30. String ur1 = "jdbc:mysql://localhost:3306/keshe";
  31. String user = "root";
  32. String password = "123456";
  33. try {
  34. Class.forName(driver);
  35. con = (Connection)DriverManager.getConnection(ur1,user,password);
  36. if(!con.isClosed())
  37. System.out.println("Succeeded connection to the Datebase!");
  38. Statement statement = (Statement)con.createStatement();
  39. String sql = "select * from keshe.guessnum order by time";
  40. ResultSet rs = statement.executeQuery(sql);
  41. while(rs.next()) {
  42. rowDate[count][0]=rs.getString("name");
  43. rowDate[count][1]=rs.getInt("count");
  44. rowDate[count][2]=rs.getInt("time");
  45. count++;
  46. };
  47. rs.close();
  48. con.close();
  49. }catch(ClassNotFoundException e) {
  50. e.printStackTrace();
  51. }catch(SQLException e) {
  52. e.printStackTrace();
  53. }catch(Exception e) {
  54. e.printStackTrace();
  55. }
  56. }
  57. }

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

闽ICP备14008679号