我是一个《天之痕》的游戏迷,刚刚学了点JAVA,仿照其中一个支线小游戏做了一个小程序,相信玩过《天之痕》的兄弟们都记得,但是我这程序出了点小问题,连点同一数字,就会出现4阳?!或者出现4阴??求老大帮我看看,哪错了~
/** 这是一个猜数字游戏,猜一个4位数(1000-9999),如果输入的一个数数位和值都和被猜数
一样,那么计作一阳,值相同位置不对,计作一阴,其他情况什么也没有。4阳则猜中了谜底。*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GameTest
{ public static void main(String[] args)
{ JFrame f = new GFrame();
f.show();
}
}
class GFrame extends JFrame
implements ActionListener
{ private String answer = "1982"; // 初始化被猜的4位数
private JPanel panel, bpanel;
private JLabel label;
private int yang, yin, num = 1; // 记录 阴数,阳数,和输入次数
public GFrame()
{ setTitle("GameTest");
setSize(400, 200);
panel = new JPanel();
bpanel = new JPanel();
getContentPane().add(panel, "North");
getContentPane().add(bpanel, "Center");
label = new JLabel("欢迎参与这个游戏");
panel.add(label);
bpanel.setLayout(new GridLayout(2, 5));
for (int i = 0; i < 10; i++)
{ addButton(bpanel, "" + i); // 加入按键0 - 9
}
}
public void addButton(Container c, String s)
{ JButton b = new JButton(s);
c.add(b);
b.addActionListener(this);
}
public void actionPerformed(ActionEvent evt)
{ String s = evt.getActionCommand();
label.setText("您输入的第 " + num + "个数字是:" + s);
String numchar ="" + answer.charAt(num - 1); // 转换类型
if (s.equals(numchar)) // 如果位置,值 都对 阳数加1
{ yang++; }
else if (answer.indexOf(s) != -1) // 如果值对,阴数加1
{ yin++; }
num++;
if (num == 5)
{ if (yang == 4 || yin == 0)
{ label.setText("4阳,恭喜您,答对了!");
double db = Math.random()*10000;
int i = (int)(db);
if (i < 1000) // 答对了 新生成一个四位数来猜
{ answer = "0" + i;
}
else
{ answer = "" + i;
}
}
else
{ label.setText(yin + "阴" + yang + "阳" + "再试一次");
}
num = 1; yin = 0; yang = 0; // 答错了 再来一次。
}
}
}