当前位置:文档之家› 人机猜拳小游戏

人机猜拳小游戏

南华大学计算机科学与技术学院实验报告(2013 ~ 2014 学年度第一学期)面向对象程序设课程名称实验名称人机猜拳游戏姓名唐龙学号*********** 专业船山软件班级13级1班地点8—410 教师夏石莹一、实验目的本课程设计所要求达到的目的:通过Java程序设计的一些重要理论基础来实现“人机猜拳小游戏”的功能。

通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果,逐步建立正确的全局观念。

二、实验设计与要求问题定义:创建小游戏,实现电脑与玩家之间互动猜拳这主要功能,并能显示设置的图片,增加美观。

研究意义:通过本次程序设计,我掌握了Java语言的基本运用,提高了理论结合实际能力。

设计要求:1)界面的左侧是电脑或者玩家的名字,让界面看起来一目了然。

2)系统界面的中间是电脑或者玩家出拳的图片。

图片可以生动形象得表示出电脑或者玩家出的拳,显示的图片在对话框中也相得益彰。

在图片的下方会显示,人机猜拳以后的输赢。

3)界面的右侧是三个剪刀石头布的按钮。

玩家通过按钮出拳,电脑随机出拳,猜拳的输赢结果在下方显示。

三、系统的主要功能1.可以通过按钮的方式,与电脑进行猜拳游戏,电脑随机出拳;2.可以显示出拳图片。

四、实验工具Windows 7;jdk1.6.0_21;eclipse五、项目实现首先建立一个Test类,如下:import java.awt.Color;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.AbstractButton;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;public class Test extends JFrame {JLabel jl,jl1;final JLabel jl2,jl3;JLabel jl4;public String person;public String m;int j;int i;final String[] arr = new String[3];public void Win(String person) {arr[0] = "石头";arr[1] = "剪刀";arr[2] = "布";person = arr[j];i = (int) (Math.random() * 3);String c = arr[i];//判断输赢if (c.equals(person)) {jl4.setText("平手");} else if (c.equals("剪刀") && person.equals("石头") || c.equals("石头")&& person.equals("布") || c.equals("布") && person.equals("剪刀")) {jl4.setText("你赢了");} else {jl4.setText("你输了");}}public Test() {JFrame jf = new JFrame();this.setSize(400, 300);this.setTitle("猜拳游戏");this.setLayout(null);jl = new JLabel("电脑出的是:");jl.setBounds(50, 50, 100, 50);this.add(jl);jl1 = new JLabel("你出的是:");jl1.setBounds(50, 120, 100, 50);this.add(jl1);// 电脑的出的拳标签jl2 = new JLabel();jl2.setBounds(150, 50, 100, 50);this.add(jl2);//我出的拳的标签jl3 = new JLabel();jl3.setBounds(150, 120, 100, 60);this.add(jl3);jl4 = new JLabel("");jl4.setBounds(150, 200, 100, 50);this.add(jl4);// 按钮final JButton btn = new JButton("石头");btn.setBounds(280, 50, 60, 40);this.add(btn);final JButton btn1 = new JButton("剪刀");btn1.setBounds(280, 105, 60, 40);this.add(btn1);final JButton btn2 = new JButton("布");btn2.setBounds(280, 160, 60, 40);this.add(btn2);//按钮事件监听btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //如果你鼠标点击的是石头按钮j = 0;String b = btn.getActionCommand();jl3.setText(b);jl3.setIcon(newImageIcon(MyImg.class.getResource(j+".jpg")));Win(person);Test.this.jl2.setIcon(newImageIcon(MyImg.class.getResource (i+".jpg")));Test.this.jl2.setText(arr[i]);System.out.println(arr[i]);}});btn1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) { j = 1;String b1 = btn1.getActionCommand();jl3.setText(b1);jl3.setIcon(newImageIcon(MyImg.class.getResource(j+".jpg")));Win(person);Test.this.jl2.setIcon(newImageIcon(MyImg.class.getResource (i+".jpg")));Test.this.jl2.setText(arr[i]);System.out.println(arr[i]);// System.out.println(b);}});btn2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) { j = 2;String b2 = btn2.getActionCommand();jl3.setText(b2);jl3.setIcon(newImageIcon(MyImg.class.getResource(j+".jpg")));Win(person);Test.this.jl2.setText(arr[i]);System.out.println(arr[i]);Test.this.jl2.setIcon(newImageIcon(MyImg.class.getResource (i+".jpg")));// System.out.println(b);}});this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setResizable(false);}public static void main(String[] args) {Test t = new Test();}}再建立一个名为MyImg的类,把下面几张图片放到该类下图片名称自左向右依次为布、石头、剪刀。

六、运行结果图1 开始界面图2 游戏过程图3 游戏过程图4 游戏过程七、实验总结从这次设计中,首先我发现了自己有很多不足的地方,根本满足不了平时编写程序的需要。

此外,我对课程设计的要求与方法不够熟练。

所以,我们要在以后的学习中,要养成好的实践习惯。

对以后的学习有很大的帮助。

这个游戏虽然很小,但是所用的专业知识很多,更全面。

相关主题