前天写的猜数字游戏,yong i控制猜测次数,有详细解析,用黑窗口可以直接运行,
我试验过了,没问题
import javax.swing.Icon;
import javax.swing.JOptionPane;
public class CaiShuZi4JOptionPane {
/**
* @param args
*/
public static void main(String[] args) {
Icon icon = null;
boolean bl = false;
int put = 0;
int c = (int) (((Math.random())*100)+1); //获取一个1-100的随机数
System.out.println("你获取的随机数是:"+c); //打印你的随机数字
String str1 = (String) JOptionPane.showInputDialog(null,"请输入你的猜测数字(1-100):\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入"); //第一次输入你的猜测数字
if(str1==null){
JOptionPane.showMessageDialog(null, "你已经取消了本次游戏"); //如果你点取消那么本次游戏结束
}else{
bl = num(str1); //判断是输入的是不是数字或者是整数
if(true==bl){ //如果是数字的话进入与随机数比较的程序
System.out.println("你输入的数字是:"+str1); //打印你输入的数字
put = Integer.valueOf(str1);
for(int i = 4;i > 0;i--){ //i是你可以猜测的次数
if(put==c){
JOptionPane.showMessageDialog(null, "恭喜你猜对了,正确答案是:"+c+"。"); //如果你猜对了就直接结束循环
break;
}else if(put>c){ //如果输大了就让你再次从新输入
str1 = (String) JOptionPane.showInputDialog(null,"你的输入过大。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");
if(str1==null){
JOptionPane.showMessageDialog(null, "你已经取消了本次输入");
break;
}else{
bl =num(str1);
if(true==bl){
put = Integer.valueOf(str1);
}else{
JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");
}
}
}else if(putstr1 = (String) JOptionPane.showInputDialog(null,"你的输入过小。你还有"+i+"次机会,请重新输入:\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");
if(str1==null){
JOptionPane.showMessageDialog(null, "你已经取消了本次输入");
break;
}else{
bl =num(str1);
if(true==bl){
put = Integer.valueOf(str1);
}else{
JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");
}
}
}
}
}else if(bl==false){ //这个 是你第一次如果填写的不是数字的话也会结束本次游戏
JOptionPane.showMessageDialog(null, "请您下次按要求填写。本次游戏结束");
}
if(true==bl && c!=put){ //如果你i次都没猜对,那么就直接告诉你这个数十什么
JOptionPane.showMessageDialog(null, "很遗憾你没能猜对,这个数字是:"+c+".");
}
}
}
public static boolean num(String value){ //一个静态方法,判断你输入的是不是数字
try {
Integer.parseInt(value);
return true;
} catch (Exception e) {
return false;
}
}
}
import javax.swing.* ;
import java.awt.* ;
import java.awt.event.* ;
public class ZiMu extends JFrame {
ZiMu(){
this.setSize(300 , 600) ;
this.setResizable(false) ;
this.setTitle("打字游戏") ;
this.setBackground(Color.BLACK) ;
MyPanel mp = new MyPanel() ;
this.add(mp) ;
this.addKeyListener(mp) ;
Thread t = new Thread (mp) ;
t.start() ;
}
public static void main(String args[]){
ZiMu w = new ZiMu () ;
w.setVisible(true) ;
}
}
class MyPanel extends JPanel implements Runnable, KeyListener {
int x[] = new int[10] ;
int y[] = new int[10] ;
int sum = 0 ;
String z[] = new String[10] ;
MyPanel(){
for(int i=0;i<10;i++){
x[i] = (int)(Math.random()*300) ;
y[i] = (int)(Math.random()*300) ;
z[i] = new String(""+(char)(Math.random()*25+65)) ;
}
}
public void paint(Graphics g) {
super.paint(g) ;
this.setBackground(Color.black) ;
g.setColor(Color.WHITE) ;
g.drawString("一分钟正确打对的字母: "+sum , 10 , 560) ;
for(int i=0;i<10;i++){
g.drawString(z[i] , x[i] , y[i]) ;
}
}
public void run(){
long g = System.currentTimeMillis() ;
while(System.currentTimeMillis()-g<=60000) {
for(int i=0;i<10;i++){
y[i] ++ ;
if(y[i]>= 600){
sum -= 1 ;
y[i] = (int)(Math.random()*50) ;
x[i] = (int)(Math.random()*280) ;
z[i] = new String(""+(char)(Math.random()*25+65)) ;
}
}
try{
Thread.sleep(20) ;
}
catch(Exception e){
}
this.repaint() ;
}
}
public void keyTyped(KeyEvent e) {
// TODO: Add your code here
}
public void keyPressed(KeyEvent e) {
String keychar = new String(""+e.getKeyChar()) ;
int yy = 0 ;
int j = -1 ;
for(int i=0;i<10;i++){
if(keychar.equals(z[i])){
if(yy
j = i ;
}
}
}
if(j!=-1){
z[j] = new String(""+(char)(Math.random()*25+65)) ;
y[j] = 0 ;
sum += 1 ;
}else{
sum -= 1 ;
}
}
public void keyReleased(KeyEvent e) {
// TODO: Add your code here
有什么需求吗?要做什么类型的游戏?