
正文
java游戏程序代码 java 游戏代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
悬赏50.求一个JAVA游戏的代码,100行左右,要求每行都有相应的解释。用了什么类,什么方法。要自己写的。
好的
我帮你写一个猜拳游戏
import java.util.Random;
import java.util.Scanner;
public class Test {
String[] array = new String[] { "布", "剪刀", "石头" };// 选项
Random r = new Random();//得到随机对象
private int player = 0;// 玩家获胜数
private int computer = 0;// 电脑获胜数
private int count = 0;//盘数
/**
* 比较方法
*
* @param i
*/
private void compare(int i) {
count++;//盘数+1
System.out.print("玩家:" + array[i - 1] + "\t");//打印出玩家的选择
int k = r.nextInt(3);//随机数
System.out.print("电脑:" + array[k] + "\t");//打印出电脑的选择
if (i - 1 == k) {//如果选择相等
System.out.println("打平");
} else if (i - 1 - k == 1 || i - 1 - k == -2) {//如果玩家获胜
System.out.println("玩家获胜");
player++;//玩家获胜数加1
} else {//如果电脑获胜
System.out.println("电脑获胜");
computer++;//电脑获胜数加1
}
}
/**
* 输出方法
*/
private void info() {
System.out.println("共" + count + "盘");//打印
System.out.println("玩家获胜" + player + "盘");//打印
System.out.println("电脑获胜" + computer + "盘");//打印
System.out.println("打平" + (count - player - computer) + "盘");//打印
}
/**
* 开始方法
*/
public void start() {
String again = "";// 是否继续
Scanner scanner = new Scanner(System.in);// 得到输入对象
do {
System.out.println("请选择:\n1.布\n2.剪刀\n3.石头\n结束请输入exit");// 打印
again = scanner.next();// 接收是否继续的字符串
if (again.equalsIgnoreCase("exit")) {// 如果不是EXIT
info();//打印
break;//跳出循环
}
if (!again.equals("1") !again.equals("2") !again.equals("3")) {
System.out.println("选择错误,请重新选择");
continue;
}
compare(Integer.parseInt(again));
} while (!again.equals("exit"));
}
/**
* @param args
*/
public static void main(String[] args) {
new Test().start();// 游戏开始
}
}
相关问答
Q1: java编写:一个游戏程序
这应该有很多种算法把。。如果不考虑效率的话穷举法是肯定可以的。。。也就是说试过所有的排列组合。。然后计算每次排列的剩余防御卡的价值和。。和最大的排列就是你要的匹配。。当然这个算法 当N很大的时候非常没效率。。但你的问题只要给出算法然后说明正确性。。所以穷举是肯定可行的。。
下面是模拟代码
import java.util.ArrayList;
public class Test {
//攻击卡数组
private int [] a = {1,1,3,4};
//匹配结果
private ArrayListint [] result = new ArrayListint []();
//防御卡数组
private D [] d = {new D(1,5),new D(2,2),new D(2,8),new D(3,4)};
//最大防御卡价值初始化为0
private int value = 0;
public static void main(String []args){
int [] input = {1,2,3,4};
Test t = new Test();
t.process(input, input.length, 0);
ArrayListint [] r = t.getResult();
int size = r.size();
System.out.println("可能的组合有"+size+"种 ");
for(int i=0;isize;i++){
int resultSize = r.get(i).length;
System.out.print("第"+(i+1)+"种 为:");
for(int j=0;jresultSize;j++){
System.out.print(r.get(i)[j]);
}
}
System.out.println();
System.out.println("Value = "+t.getValue());
System.out.println("结束");
}
public void process(int[] input, int n, int k) {
if (n == k) {
int count = 0;
int size = input.length;
int [] out = new int [size];
for (int i = 0; i size; i++) {
if(d[input[i]-1].getX()a[i]){
count += d[input[i]-1].getY();
}
out [i] = input[i];
}
//如果排列价值和大于之前的最大防御价值改变最优匹配
if(count value){
if(result.size() != 0){
result.clear();
}
result.add(out);
value = count;
for(int in:out){
System.out.print(in);
}
System.out.println();
}
//如果价值和一样并且没有这个组合增加到结果list
if(count == value !this.inTheResult(input)){
result.add(out);
for(int in:out){
System.out.print(in);
}
System.out.println();
}
} else {
for (int i = k; i n; i++) {
swap(input, k, i);
process(input, n, k + 1);
swap(input, i, k);
}
}
}
public boolean inTheResult(int[]a){
int size = this.result.size();
for(int i=0;isize;i++){
int s = this.result.get(i).length;
for(int j=0;js;j++){
if(a[j] != this.result.get(i)[j]){
return false;
}
}
}
return true;
}
public ArrayListint[] getResult(){
return this.result;
}
public int getValue(){
return this.value;
}
public void swap(int[] a, int x, int y) {
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}
//防御卡的类 x是di y是wi
public class D{
// x = di y = wi
private int x,y;
D (int x,int y){
this.x = x;
this.y = y;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
}
}
运行结果
1234
1243
1324
1342
2314
2341
3214
3241
3412
3421
4321
4312
可能的组合有4种
第1种 为:3412第2种 为:3421第3种 为:4321第4种 为:4312
Value = 12
结束
貌似测试了下应该是正确的
其实这个问题挺有意思的建议你不要看我的代码根据我的提示自己做次
Q2: 求一个简单的JAVA游戏代码,100行左右,谢谢!
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Painter extends JFrame{
/**
*
*/
private static final long serialVersionUID = 8160427604782702376L;
CanvasPanel canvas = new CanvasPanel();;
public Painter() {
super("Star");
this.add(canvas);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
public static void main(String[] args) {
new Painter();
}
}
class CanvasPanel extends JPanel implements ActionListener{
/**
*
*/
private static final long serialVersionUID = -4642528854538741028L;
private JButton[] btn = new JButton[4];
private String[] btn_name = {"+", "-", "R", "L"};
private int center_x = 200, center_y = 200, radius = 100, degree = 0;
public CanvasPanel() {
this.setPreferredSize(new Dimension(400, 500));
this.setLayout(null);
for(int i = 0; i 4; i++) {
btn[i] = new JButton(btn_name[i]);
btn[i].setBounds(160 + i * 60, 425, 50, 50);
btn[i].addActionListener(this);
this.add(btn[i]);
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
for(int i = 0; i 5; i++) {
g.drawLine( (int) (center_x + radius * Math.sin(Math.toRadians(degree + 72 * i))),
(int) (center_y - radius * Math.cos(Math.toRadians(degree + 72 * i))),
(int) (center_x + radius * Math.sin(Math.toRadians(degree + 72 * i + 144))),
(int) (center_y - radius * Math.cos(Math.toRadians(degree + 72 * i + 144))));
}
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand() == "+") {
if(radius 200)
radius += 2;
repaint();
} else if(e.getActionCommand() == "-") {
if(radius 0)
radius -= 2;
repaint();
} else if(e.getActionCommand() == "R") {
degree = (degree + 2) % 360;
repaint();
} else if(e.getActionCommand() == "L") {
degree = (degree - 2) % 360;
repaint();
}
}
}
Q3: 求高手帮忙一个“扫雷”游戏的JAVA的程序代码
import javax.swing.ImageIcon; //程序入口
public class Block {
String name; //名字,比如"雷"或数字
int aroundMineNumber; //周围雷的数目
ImageIcon mineIcon; //雷的图标
boolean isMine=false; //是否是雷
boolean isMark=false; //是否被标记
boolean isOpen=false; //是否被挖开
public void setName(String name) {
this.name=name;
}
//设置周围的雷数
public void setAroundMineNumber(int n) {
aroundMineNumber=n;
}
//获得周围的雷数
public int getAroundMineNumber() {
return aroundMineNumber;
}
public String getName() {
return name;
}
//判断是否是雷
public boolean isMine() {
return isMine;
}
//设置是否为雷
public void setIsMine(boolean b) {
isMine=b;
}
//设置雷的图标
public void setMineIcon(ImageIcon icon){
mineIcon=icon;
}
//获得雷的图标
public ImageIcon getMineicon(){
return mineIcon;
}
//确定雷是否被挖开
public boolean getIsOpen() {
return isOpen;
}
//设置为已经被挖开
public void setIsOpen(boolean p) {
isOpen=p;
}
//返回此处是否已经被标记
public boolean getIsMark() {
return isMark;
}
//设置此处是否已经被标记
public void setIsMark(boolean m) {
isMark=m;
}
import javax.swing.*;
import java.awt.*;
public class BlockView extends JPanel{
JLabel blockNameOrIcon; //用来显示Block对象的name、number和mineIcon属性
JButton blockCover; //用来遮挡blockNameOrIcon.
CardLayout card; //卡片式布局
BlockView(){
card=new CardLayout();
setLayout(card);
blockNameOrIcon=new JLabel("",JLabel.CENTER);
blockNameOrIcon.setHorizontalTextPosition(AbstractButton.CENTER);
blockNameOrIcon.setVerticalTextPosition(AbstractButton.CENTER);
blockCover=new JButton();
add("cover",blockCover);
add("view",blockNameOrIcon);
}
//给出视觉效果变化
public void giveView(Block block){
// 如果是雷,将对应的图标和文字更改
if(block.isMine){
blockNameOrIcon.setText(block.getName());
blockNameOrIcon.setIcon(block.getMineicon());
}
else {
int n=block.getAroundMineNumber();
if(n=1)
blockNameOrIcon.setText(""+n);
else
blockNameOrIcon.setText(" ");
}
}
public void seeBlockNameOrIcon(){
card.show(this,"view");
validate();
}
public void seeBlockCover(){
card.show(this,"cover");
validate();
}
public JButton getBlockCover(){
return blockCover;
}
}
Q4: java 小游戏
import java.util.Random;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.*;
public class SmallGame extends JFrame {
private Random r;
private String[] box = { "剪刀", "石头", "布" };
private JComboBox choice;
private JTextArea ta;
private JLabel lb;
private int win = 0;
private int loss = 0;
private int equal = 0;
public SmallGame() {
initial();//调用initial方法,就是下面定义的那个.该方法主要是初始界面.
pack();
setTitle("游戏主界面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400, 300);
setVisible(true);
}
public static void main(String[] args) {
new SmallGame();
}
public void initial() {
r = new Random(); // 生成随机数
choice = new JComboBox();//初始化choice这个下拉框.也就是你选择出剪子还是石头什么的那个下拉框..
for (int i = 0; i box.length; i++) {//为那个下拉框赋值.用前面定义的private String[] box = { "剪刀", "石头", "布" };附值.这样下拉框就有三个选项了..
choice.addItem(box[i]);
}
ta = new JTextArea(3, 15);//初始化那个文本域3行15列
ta.setEditable(false);//让用户不能编辑那个文本域即不能在里面写东西
JButton okBut = new JButton("出招");//新建一个出招的按钮
okBut.addActionListener(new ActionListener() {//给出招按钮加个监听.意思就是监听着这个按钮看用户有没有点击它..如果点击就执行下面这个方法
public void actionPerformed(ActionEvent e) {//就是这个方法
ta.setText(getResult());//给那个文本域赋值..就是显示结果 赋值的是通过getResult()这个方法得到的返回值 getResult()这个方法下面会讲
lb.setText(getTotal());//给分数那个LABEL赋值..就是显示分数..赋值的是通过getTotal()这个方法得到的返回值
}
});
JButton clearBut = new JButton("清除分数");//新建一个清楚分数的按钮
clearBut.addActionListener(new ActionListener() {//同上给他加个监听
public void actionPerformed(ActionEvent e) {//如果用户点击了就执行这个方法
ta.setText("");//给文本域赋值为""..其实就是清楚他的内容
win = 0;//win赋值为0
loss = 0;//同上
equal = 0;//同上
lb.setText(getTotal());//给显示分数那个赋值..因为前面已经都赋值为0了..所以这句就是让显示分数那都为0
}
});
lb = new JLabel(getTotal());//初始化那个显示分数的东西
JPanel choicePanel = new JPanel();//定义一个面板..面板就相当于一个画图用的东西..可以在上面加按钮啊文本域什么的..
choicePanel.add(choice);//把下拉框加到面板里
choicePanel.add(okBut);//把出招按钮加到面板里
choicePanel.add(clearBut);//把清楚分数按钮加到面板里
JScrollPane resultPanel = new JScrollPane(ta);//把文本域加到一个可滚动的面板里面..JScrollPane就是可滚动的面板..这样如果那个文本域内容太多就会出现滚动条..而不是变大
JPanel totalPanel = new JPanel();//再定义个面板..用来显示分数的..
totalPanel.add(lb);//把那个显示分数的label加到里面去
Container contentPane = getContentPane();//下面就是布局了..
contentPane.setLayout(new BorderLayout());
contentPane.add(choicePanel, BorderLayout.NORTH);
contentPane.add(resultPanel, BorderLayout.CENTER);
contentPane.add(totalPanel, BorderLayout.SOUTH);
}
public String getResult() {//获得结果的方法 返回值是一个String..这个返回值会用来显示在文本域里面
String tmp = "";
int boxPeop = choice.getSelectedIndex();//获得你选择的那个的索引..从0开始的..
int boxComp = getBoxComp();//获得电脑出的索引..就是随机的0-2的数
tmp += "你出:\t" + box[boxPeop];//下面你应该明白了..
tmp += "\n电脑出:\t" + box[boxComp];
tmp += "\n结果:\t" + check(boxPeop, boxComp);
return tmp;
}
public int getBoxComp() {//就是产生一个0-2的随机数..
return r.nextInt(3);//Random的nextInt(int i)方法就是产生一个[0-i)的随机整数 所以nextInt(3)就是[0-2]的随机数
}
public String check(int boxPeop, int boxComp) {//这个就是判断你选择的和电脑选择的比较结果..是输是赢还是平..boxPeop就是你选择的..boxComp就是电脑选择的..
String result = "";
if (boxPeop == (boxComp + 1) % 3) {//(boxComp + 1) % 3 电脑选择的加上1加除以3取余..也就是如果电脑选0这个就为1..这个判断的意思就是如果电脑选0并且你选1..那么就是电脑选了
//private String[] box = { "剪刀", "石头", "布" };这里面下标为0的..你选了下标为1的..就是电脑选剪刀你选石头..所以你赢了..如果电脑选1..(boxComp + 1) % 3就为2..意思就是
//电脑选了石头你选了布..所以你赢了..另外一种情况你明白了撒..只有三种情况你赢..所以这里都包含了..也只包含了那三种..
result = "你赢了!";
win++;//赢了就让记你赢的次数的那个变量加1
} else if (boxPeop == boxComp) {//相等当然平手了
result = "平";
equal++;//同上了
} else {//除了赢和平当然就是输了..
result = "你输了!";
loss++;//同上
}
return result;
}
public int getPoint() {
return (win - loss) * 10;
}
public String getTotal() {
return "赢:" + win + " 平:" + equal + " 输:" + loss + " 得分:"
+ getPoint();
}
}
希望你能明白哈。。
Q5: 求java编写数字游戏程序代码
这个 是 DOS 界面的,下面还有一个applet的
import java.lang.Math;
import java.util.Scanner;
public class Test40 {
public static void main(String[] args) {
go();
}
private static void go() {//程序逻辑结构
int aa = (int) (Math.random() * 100); // create a number from 1 to 100
System.out.println("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int count=0;//计数器,统计猜测次数
int guessnum = 0;
while(true){
guessnum = sc.nextInt();
if (guessnum aa) {
System.out.println("大了,请输入个小点的数字!");
}
if (guessnum aa) {
System.out.println("小了,请输入个大点的数字!");
}
if (guessnum == aa) {
System.out.println("恭喜你,猜对了!您一共猜了"+count+"次");
System.out.println("是否继续?Y/N");
String s=sc.next();
if("Y".equals(s)||"y".equals(s)){
System.out.println("程序已重新开始!");
go();
}else if("N".equals(s)||"n".equals(s)){
System.out.println("程序已关闭!");
System.exit(0);//退出程序
}
}
count++;
}
}
}
下面的是applet的
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class Guess extends Applet implements ActionListener {
Panel p1, p2, p3, p4;
Button b1, b2;
Label l1, l2;
TextField t1;
TextArea t2;
int num;
public void init() {
setSize(230, 300);
setBackground(Color.pink);
l1 = new Label("这是一个猜数字程序(0-100)", Label.CENTER);
l2 = new Label("begin:");
t1 = new TextField(10);
t2 = new TextArea("", 10, 30);
b1 = new Button("猜测");
b2 = new Button("查看数字");
Random rand = new Random();
num = rand.nextInt(100);
add(l1);
add(l2);
add(t1);
add(t2);
add(b1);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent j) {
int n;
try {
if (j.getSource() == b1) {
String s;
s = String.valueOf(t1);
if (s.compareTo("1") 0 || s.compareTo("9") 0)
t2.setText("输入有误!\n请重新输入!");
n = Integer.parseInt(t1.getText());
if (n num)
t2.setText("小了,请输入个大点的数字");
else if (n num)
t2.setText("大了,请输入个小点的数字");
else {
t2.setText("恭喜你,猜对了");
Random rand1 = new Random();
num = rand1.nextInt(100);
}
}
if (j.getSource() == b2) {
t2.setText("" + num);
}
} catch (Exception e) {
}
}
}





