JAVA课程设计,拜托各位兄弟姐妹了。
发布网友
发布时间:2022-04-27 13:27
我来回答
共4个回答
热心网友
时间:2023-09-24 15:34
额,这个以前练习过... 应该很简单的吧.
/**改进之处:
*1.再加上猜数次数,列个排行榜,鼓励玩家。
*2.加上背景、音乐。
*3.自动找组件的焦点,方便玩家输入。
*4.加上菜单,保存游戏进度。
*/
package mygame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class mygame extends JFrame implements ActionListener
{
public static JLabel jl1,jl2;
JTextField jt1;
JTextArea ja1;
JButton jb1,jb2,jb3;
ImageIcon ic1,ic2;
int shuzi[]=new int[4];//存放四位被猜数
public mygame()
{
this.setTitle("猜数字");
this.setSize(400,300);
Container cp=this.getContentPane();
JPanel jp=new JPanel();
jp.setLayout(new BorderLayout());
cp.add(jp);
ic1=new ImageIcon("pic1.gif");
ic2=new ImageIcon("pic2.gif");
//为使界面整齐美观,先把各个组件放到panel里,在按方位把panel放到主面板里。
JPanel jp1=new JPanel();//屏幕上方的标签
jl1=new JLabel("----测测你的智商和运气:猜数字!----");
jp1.add(jl1);
jp.add(jp1,BorderLayout.NORTH);
JPanel jp2=new JPanel();//屏幕中间的文本框
jt1=new JTextField("请输入数字",10);
jt1.setFont(new Font("黑体",1,40));
jt1.setEnabled(false);
jp2.add(jt1);
jl2=new JLabel();
jl2.setIcon(ic1);
jp2.add(jl2);
ja1=new JTextArea("说明:\n位置及数字都对为全对,\n数字对位置不对为半对.\n游戏过程记录:\n",8,23); //记录游戏进程的编辑框
ja1.setEditable(false);
JScrollPane js=new JScrollPane(ja1);//编辑框的滚动条
jp2.add(js);
jp.add(jp2,BorderLayout.CENTER);
JPanel jp3=new JPanel();//屏幕下方的按钮
jb1=new JButton("开局");
jb1.setActionCommand("ks");
jb1.addActionListener(this);
jb2=new JButton("结束");
jb2.setActionCommand("js");
jb2.setEnabled(false);
jb2.addActionListener(this);
jb3=new JButton("我猜");
jb3.setActionCommand("wc");
jb3.setEnabled(false);
jb3.addActionListener(this);
JButton jb4=new JButton("退出");
jb4.setActionCommand("tc");
jb4.addActionListener(this);
//再加一个结束按钮
jp3.add(jb1);
jp3.add(jb3);
jp3.add(jb2);
jp3.add(jb4);
jp.add(jp3,BorderLayout.SOUTH);
for(int i=0;i<=3;i++) //初始化被猜数字数组
{
shuzi[i]=i;
}
}
public void actionPerformed(ActionEvent e)
{//实现按钮动作的方法
String btn=e.getActionCommand();
int s,s1,s2,s3,s4;
int gc=0;
int pc=0;
if(btn=="ks")
{
ja1.setText("说明:\n位置及数字都对为全对,\n数字对位置不对为半对.\n游戏过程记录:\n");
jt1.setEnabled(true);
jt1.setText("请输入数字");
while(true)//在循环中寻找合适的被猜数,4位数字不重复的4位数
{
s=(int)(10000.0*Math.random());
if(s>123&&s<9876)
{
s1=s/1000; //把四位数打散,加入到数组中
s2=(s/100)-10*s1;
s3=(s/10)-100*s1-s2*10;
s4=(s%10);
if(s1!=s2&&s1!=s3&&s1!=s4&&s2!=s3&&s2!=s4&&s3!=s4)
{
shuzi[0]=s1;
shuzi[1]=s2;
shuzi[2]=s3;
shuzi[3]=s4;
break;//找到这样的被猜数就跳出循环
}
}
}
jl1.setText("请输入一个四位整数,0~9这十个数字每个都只能出现一次.");
//jl2.setText("------------------"+shuzi[0]+" "
// +shuzi[1]+" "+shuzi[2]+" "+shuzi[3]+"-----------------");
jb2.setEnabled(true);
jb3.setEnabled(true);
jb1.setEnabled(false);
}
if(btn=="js")
{
jb1.setEnabled(true);
jb2.setEnabled(false);
jb3.setEnabled(false);
jl2.setIcon(ic1);
jt1.setEditable(true);
}
if(btn=="wc")
{
String input=jt1.getText();
if(input.length()!=4)
ja1.append("输入位数错误--输入四位数.\n");
///////////////////////////////位数正确
else
{
ff:for(int i=0;i<=3;i++) //加一个跳出标志ff,当break时,跳出这里
{
if(input.charAt(i)>'9'||input.charAt(i)<'0') //判断输入的是否数字
{
ja1.append("输入字符错误--只能输入数字.\n");
gc=9;
break ff;
}/////////////////////////////字符正确
for(int j=i+1;j<=3;j++)
{
if(input.charAt(i)==input.charAt(j))
{
ja1.append("输入重复数字--输入数字不能相同.\n");
gc=9;
break ff;
}
}////////////////////////////没有重复数字
if(shuzi[i]==((int)input.charAt(i)-48))
gc++;
}
if(gc!=9) //防止输入错误,程序仍然判断答对几处数字.
{
for(int m=0;m<=3;m++)
{
for(int n=0;n<=3;n++)
{
if(((int)input.charAt(m)-48)==shuzi[n])
pc++;
}
}
if(gc!=4)
ja1.append(input+":全对"+gc+"处,半对"+(pc-gc)+"个数字,"+"继续加油!\n");
}
}
if(gc==4)
{
ja1.append("恭喜你!答对了!");
gc=0;
pc=0;
jb3.setEnabled(false);
jl2.setIcon(ic2);
jt1.setEditable(false);//
}
}
if(btn=="tc")
{
int i=JOptionPane.showConfirmDialog(this,"确定要退出吗?", "退出提示",
JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
if(i==JOptionPane.OK_OPTION)
System.exit(0);
}
}
public static void main(String args[])
{
mygame mf=new mygame();
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mf.setVisible(true);
}
}
热心网友
时间:2023-09-24 15:35
下面提供Application程序源码,Applet参照着写吧
import java.util.Random;
import java.util.Scanner;
/*
* 游戏随即给出一个0~99(包括0和99)的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终退出答案。在游戏过程中。记录你最终猜对时所需要的次数。游戏结束后公布结果。见下
次数 结果
1 你太有才了!
2~6 这么快就猜出来了,很聪明么!
大于7 猜了半天才猜出来,小同志,尚需努力啊!
*/
public class guessGame {
/**
* @param args
*/
public static void main(String[] args) {
int gameValue = (int)(Math.random()*(100-1)+1);
System.out.println("Rand:"+gameValue);
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int num = sc.nextInt();
int guessCorrectNum=1;
while(true){
if(num==gameValue){
if(guessCorrectNum == 1)
System.out.println("你太有才了!");
else if((guessCorrectNum >=2) && (guessCorrectNum<=6))
System.out.println("这么快就猜出来了,很聪明么");
else if(guessCorrectNum >7)
System.out.println("猜了半天才猜出来,小同志,尚需努力啊!");
break;
}
else{
if (guessCorrectNum <=20){
guessCorrectNum = guessCorrectNum + 1;
num = sc.nextInt();
}
else{
System.out.println("20次都猜不出来...,不让你猜了");
break;
}
}
}
}
}
热心网友
时间:2023-09-24 15:35
import java.util.Scanner;
public class ForTest {
public static void main(String args[] ){
Scanner reader=new Scanner(System.in);
int times=0;
int number=0;
int n;
int min=1,max=100;
number=(int)(Math.random()*(100-1)+1);
System.out.println(number);
while(true){
System.out.print("请输入一个数:");
System.out.println();
n=reader.nextInt();
times++;
if(n==number){
if (times<2) {
System.out.print("你太有才了");
}
if (times>=2&×<10) {
System.out.print("还行吗,蛮厉害的吗 ");
}
if (times>=10&×<20) {
System.out.print("马马虎虎啊");
}
if (times>=20) {
System.out.print("你真菜啊");
}
break;
}
if (n<number) {
min=n;
System.out.print("你输入的数太小\n请输入"+min+"到"+max+"的数");
}
if(n>number){
max=n;
System.out.print("你输入的数太大\n请输入"+min+"到"+max+"的数");
}
}
热心网友
时间:2023-09-24 15:36
天啊。你这个还是挺难得啊。。。