| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 951 人关注过本帖
标题:仿《天之痕》小游戏
只看楼主 加入收藏
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
 问题点数:0 回复次数:4 
仿《天之痕》小游戏

我是一个《天之痕》的游戏迷,刚刚学了点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; // 答错了 再来一次。
}
}
}

搜索更多相关主题的帖子: 天之痕 小游戏 
2005-12-15 17:23
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
我刚学java的时候就想到做hello world了
看来。。。。。

http://kongfuziandlife. http://codeanddesign.
2005-12-15 21:05
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 
我知道错哪里了, 把 || 换成 &amp;&amp; 就好了 哈哈 太粗心了 这都没分清。  

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2005-12-16 16:43
litchijoy
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-12-16
收藏
得分:0 

程序里没有setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);啊


要不你程序关闭的时候没有交权给系统啊……
setTitle("GameTest");
setSize(400, 200);
//加在这里就可以了:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();

2005-12-16 22:14
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
收藏
得分:0 
我后来加了WindowListener 的winowClosing()事件下加了System.exit(0);方法。
另外,在生成随机数那里加了一段代码使随机数不重复。不知道这样写好不好,请指教~
String a[] = new String[4];
for (int i = 0; i < 4; i++)
{ a[i] = "" + (int)(Math.random() * 10);
}
for (int i = 0; i < 3; i++)
{ for (int j = 1 + i; j < 4; j++)
{ while(a[i].equals(a[j]))
{ a[j] = "" + (int)(Math.random() * 10);
}
}
}
answer = a[0] + a[1] + a[2] + a[3];

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2005-12-17 15:32
快速回复:仿《天之痕》小游戏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034795 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved