Java华容道游戏

问题描述

呵呵,我就一新手,代码是书上的。主要是实验组件上的鼠标事件。当一个组件处于激活状态时,组件可以成为触发KeyEvent事件的事件源。组件可以触发焦点事件,从无输入焦点变为有输入焦点是,触发FocusEvent事件。使用FocusListener接口处理焦点事件。JavaCodeMainClass.javapublicclassMainClass{publicstaticvoidmain(Stringargs[]){newHuaRongRoad();}}HuaRongRoad.javaimportjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassHuaRongRoadextendsJFrameimplementsMouseListener,KeyListener,ActionListener{Personperson[]=newPerson[10];JButtonleft,right,above,below;JButtonrestart=newJButton("重新开始");publicHuaRongRoad(){init();setBounds(100,100,320,400);setVisible(true);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidinit(){setLayout(null);add(restart);restart.setBounds(100,320,120,25);restart.addActionListener(this);Stringname[]={"曹操","关羽","张","刘","周","黄","兵","兵","兵","兵"};for(intk=0;k<name.length;k++){person[k]=newPerson(k,name[k]);person[k].addMouseListener(this);person[k].addKeyListener(this);add(person[k]);}person[0].setBounds(104,54,100,100);person[1].setBounds(104,154,100,50);person[2].setBounds(54,154,50,100);person[3].setBounds(204,154,50,100);person[4].setBounds(54,54,50,100);person[5].setBounds(204,54,50,100);person[6].setBounds(54,254,50,50);person[7].setBounds(204,254,50,50);person[8].setBounds(104,204,50,50);person[9].setBounds(154,204,50,50);person[9].requestFocus();left=newJButton();right=newJButton();above=newJButton();below=newJButton();add(left);add(right);add(above);add(below);left.setBounds(49,49,5,260);right.setBounds(254,49,5,260);above.setBounds(49,49,210,5);below.setBounds(49,304,210,5);validate();}publicvoidkeyTyped(KeyEvente){}publicvoidkeyReleased(KeyEvente){}publicvoidkeyPressed(KeyEvente){Personman=(Person)e.getSource();if(e.getKeyCode()==KeyEvent.VK_DOWN){go(man,below);}if(e.getKeyCode()==KeyEvent.VK_UP){go(man,above);}if(e.getKeyCode()==KeyEvent.VK_LEFT){go(man,left);}if(e.getKeyCode()==KeyEvent.VK_RIGHT){go(man,right);}}publicvoidmousePressed(MouseEvente){Personman=(Person)e.getSource();intx=-1,y=-1;x=e.getX();y=e.getY();intw=man.getBounds().width;inth=man.getBounds().height;if(y>h/2){go(man,below);}if(y<h/2){go(man,above);}if(x>w/2){go(man,left);}if(x<w/2){go(man,right);}}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseClicked(MouseEvente){}publicvoidgo(Personman,JButtondirection){booleanmove=true;RectanglemanRect=man.getBounds();intx=man.getBounds().x;inty=man.getBounds().y;if(direction==below){y=y+50;}elseif(direction==above){y=y-50;}elseif(direction==left){x=x-50;}elseif(direction==right){x=x+50;}manRect.setLocation(x,y);RectangledirectionRect=direction.getBounds();for(intk=0;k<10;k++){RectanglepersonRect=person[k].getBounds();if((manRect.intersects(personRect))&(man.number!=k)){move=false;}}if(manRect.intersects(directionRect)){move=false;}if(move==true){man.setLocation(x,y);}}publicvoidactionPerformed(ActionEvente){dispose();newHuaRongRoad();}}Person.javaimportjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassPersonextendsJButtonimplementsFocusListener{intnumber;Colorc=newColor(255,245,170);Person(intnumber,Strings){super(s);setBackground(c);this.number=number;c=getBackground();setFont(newFont("楷体_BG2312",Font.BOLD,14));addFocusListener(this);}publicvoidfocusGained(FocusEvente){setBackground(Color.red);}publicvoidfocusLost(FocusEvente){setBackground(c);}}

解决方案

解决方案二:
做的不错不过这个例子可能是教你熟悉组件,所有格子都是JButton而在正式做游戏的时候很忌讳使用一个控件(例如JButton)来做一个游戏中的单元格的这往往需要自己用Graphics2D来在一个面板上画的这样可以节省资源,一个Swing组件,附带的属性和方法很多,创建一个蛮耗资源的一个简单的游戏看不出来如果一个复杂点的,比如围棋,你不能弄19*19个JButton吧所以,这个例子学习就好自己写游戏,一定要掌握Graphics2D的核心部分自己来画,不能全靠控件
解决方案三:
莫非是java2实用教程里的例子?
解决方案四:
自己写游戏,一定要掌握Graphics2D的核心部分自己来画,不能全靠控件这句话不错......
解决方案五:
学习了.看下.还没有学那么的高深.刚刚入门..菜鸟一个..

时间: 2024-09-14 10:34:10

Java华容道游戏的相关文章

java代码java-关于Java五子棋游戏端口被占用,玩家无法添加

问题描述 关于Java五子棋游戏端口被占用,玩家无法添加 如何在其中添加玩家,求大神帮助,具体步骤 解决方案 写个函数判断哪些端口被用到,用那些还没被用到的端口就好了. 解决方案二: 检查下防火墙,换一个端口,使用随机端口

怎样实现java小游戏的联机?

问题描述 怎样实现java小游戏的联机? 我们现在是要做一个java小游戏,已经写了各种界面还有行动的逻辑,现在需要实现联机,不太能理解怎样用socket实现联机以及各个组件的交互,求大神帮助! 解决方案 http://blog.csdn.net/u014174328/article/details/40866263http://blog.csdn.net/emilyRR/article/details/40596647 解决方案二: http://blog.csdn.net/a19881029

java记忆翻牌游戏代码-JAVA做出记忆翻牌游戏,菜鸟想学习JAVA的游戏制作

问题描述 JAVA做出记忆翻牌游戏,菜鸟想学习JAVA的游戏制作 20C 1.界面打开为网格,每个网格放一张图片,图片两两相同2.点开两张图片若是一样则显示,若是不一样,显示50ms,变为背面.3.每轮游戏结束时显示总共花费时间.4.重复步骤2,直到所有图片显示出来 解决方案 http://download.csdn.net/detail/gaoda871010/2652900http://www.educity.cn/xiazai/8649772.html 解决方案二: 看下我写的这个怎么样.

初学者-java小游戏设计问题(有些冗长,麻烦耐心看完!)

问题描述 java小游戏设计问题(有些冗长,麻烦耐心看完!) 该小游戏是为了实现电脑随机出石头,剪刀,或布,然后玩家根据电脑的要求(赢电脑,输电脑,打平),大致思路是客户端发出指令开始游戏,服务器端接收后随机选择,然后发回给客户端,玩家选择后,服务器做出判断对错.现将游戏的服务器端与客户端贴出,现在的问题是当玩家输入自己的判断后,服务器返回的值一直是"回答错误",求解! 这是 服务器端 的程序 import java.io.*; import java.net.*; import ja

java游戏-Java小游戏npc碰撞后的随机方向设置

问题描述 Java小游戏npc碰撞后的随机方向设置 npc的随机方向设置和碰撞后方向随机怎样设置,就是NPC在地图中行走,碰到其他物体后随机一个方向继续行走 解决方案 首先npc有个活动范围,其次活动范围内可能有障碍物,那你npc在一个点时下一步上下左右四个方向哪些方向能走是能判断出来的, 然后把能走的方向放到数组里,用随机数,范围为数组长度,然后选择往哪里走,知道不能走后再继续判断改变方向.

java-如题比如我下了一个JAVA小游戏源代码照着写就能运行了吗

问题描述 如题比如我下了一个JAVA小游戏源代码照着写就能运行了吗 比如说俄罗斯方块,五子棋 等我该注意什么问题呢,大神们我知道我的问题对你们来说都是小问题,新手求科普 解决方案 看来你还没有做过游戏方面的东西吧.一般而言,游戏不止有代码,同样的还必须有图片资源,你想一下不然游戏的美工不就只有喝西北风了!!当然也有例外,比如你完全只是调用一些简单的几何图形函数就不会用到图片资源.但是这种游戏几乎没有!所以你要看代码中调用图片资源没有,如果有,还要找到图片资源,同时还要看用到其他的库没有,如果用到

Java棋类游戏实践之单机版五子棋_java

本文实例讲述了java实现的五子棋游戏代码,分享给大家供大家参考,具体代码如下 一.实践目标        1.掌握JavaGUI界面设计        2.掌握鼠标事件的监听(MouseListener,MouseMotionListener)二.实践内容      设计一个简单的五子棋程序,能够实现五子棋下棋过程.如下图所示   1.五子棋棋盘类 package cn.edu.ouc.fiveChess; import java.awt.Color; import java.awt.Curs

java-新人,求助:Java小游戏代码改成安卓代码

问题描述 新人,求助:Java小游戏代码改成安卓代码 英雄难过棍子关的安卓代码 自己也是下载的源代码,想参考它写成安卓代码,但是一直没成功,求助. 解决方案 他们两者就是画图机制不一样,java paint Android canvas 解决方案二: http://download.csdn.net/download/u011040361/8310321

求Java连连看游戏程序

问题描述 求Java连连看游戏程序能在Eclipse上面运行...有的发我邮箱270364622@qq.com感激不尽啊... 解决方案 解决方案二:这个区javase板块可能有吧解决方案三:兄弟啊,还想找弹弹堂的呢!!!