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{
/**
*
*/
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 String[] btn_name = {"+", "-", "R", "L"};
public CanvasPanel() {
this.setLayout(null);
btn[i] = new JButton(btn_name[i]);
btn[i].addActionListener(this);
this.add(btn[i]);
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand() == "+") {
repaint();
} else if(e.getActionCommand() == "-") {
if(radius 0)
} else if(e.getActionCommand() == "R") {
} else if(e.getActionCommand() == "L") {
package?com.lxi;
import?java.io.BufferedReader;
import?java.io.InputStreamReader;
public?class?Rpg?{
public?static?void?main(String[]?args)?throws?Exception?{
System.out.println("今天这一节输入两个人物进行PK,以英文逗号分隔:?[BM,DH,MK]");
BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(System.in));
ClassPerson?c1;
try?{
String?temp?=?br.readLine();
String[]?str?=?temp.split(",");
throw?new?Exception("输入格式有误,按默认PK");
c1?=?(ClassPerson)?Class.forName("com.lxi."
+?str[0].toUpperCase());
+?str[1].toUpperCase());
}?catch?(Exception?e)?{
//?TODO?Auto-generated?catch?block
c1?=?(ClassPerson)?Class.forName("com.lxi.BM");
Person?p1?=?c1.newInstance();
long?time?=?System.currentTimeMillis();
long?nextTime1?=?(long)?(time?+?p1.coldTime*1000);?//
System.out.println("---游戏开始---");
while?(true)?{
long?currenTime?=?System.currentTimeMillis();
if?(nextTime1?currenTime)?{?//时间到则发动攻击
nextTime1?+=?p1.coldTime*1000?+?p1.waitTime*1000;?//下次攻击时间=冷却时间+被晕眩时间
p1.waitTime?=?0;?//回合结束,重置被晕眩时间为0
}?catch?(ClassCastException?e)?{
e.printStackTrace();
}?catch?(InstantiationException?e)?{
}?catch?(IllegalAccessException?e)?{
import?java.util.Random;
class?BM?extends?Person?{
public?BM()?{
waitTime?=?0;
int?count?=?0;?//防御技能发动的次数
boolean?hitFlag?=?false;
boolean?defenseFlag?=?false;
Random?rand?=?new?Random();
public?void?hit(Person?p)?{
if?(rand.nextInt(10)?chanceHit)?{
hitFlag?=?true;
int?hurt?=?p.defense(this);
p.val?=?p.val?-?hurt;
fight?=?temp;??//还原为单倍攻击
if?(p.val?=?0)?{
System.out.println(this.getClass().getSimpleName()?+?"胜出!");
System.exit(0);
System.out.println(this.getClass().getSimpleName()?+?"攻击"
+?p.getClass().getSimpleName()?+?","
+?this.getClass().getSimpleName()
+?(this.hitFlag?"发动攻击技能?"?:?"未发动攻击技能?")
+?p.getClass().getSimpleName()
+?(this.defenseFlag?"发动防御技能?"?:?"未发动防御技能?")
+?this.getClass().getSimpleName()?+?":"?+?this.val?+?","
+?p.getClass().getSimpleName()?+?":"?+?p.val);
hitFlag?=?false;
defenseFlag?=?false;
public?int?defense(Person?p)?{
if?(rand.nextInt(10)?chanceDefense)?{
if?(count?!=?0)?{
p.val?=?p.val?-?p.fight;
count++;
defenseFlag?=?true;
return?p.fight;
class?MK?extends?Person?{
public?MK()?{
//三个人物的基类
abstract?class?Person?{
int?val;???//生命值
double?coldTime;??//冷却时间
int?waitTime;??//晕眩时间
int?fight;??//攻击力
int?chanceHit;?//发起主动技能的概率
int?chanceDefense;?//发起防御技能的概率
abstract?void?hit(Person?p);?//攻击技能
abstract?int?defense(Person?p);?//防御技能,返回被伤害点数
class?DH?extends?Person?{
public?DH()?{
coldTime?=?1.0;
boolean?hitFlag?=?false;?//主动技能发动的标识
boolean?defenseFlag?=?false;?//防御技能发动的标识
if?(rand.nextInt(10)?chanceHit)?{?//发动主动技能
val?=?val?+?hurt;
hitFlag?=?true;??//标记主动技能已经发动
}?else?{?//进行普通攻击
hitFlag?=?false;??//
defenseFlag?=?false;?//重置标记,下次重用
defenseFlag?=?true;?//标记防御技能已经发动
return?0;
}?else?{
连连看的小源码
package Lianliankan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮
JLabel fractionLable=new JLabel("0"); //分数标签
JButton firstButton,secondButton; //分别记录两次被选中的按钮
static boolean pressInformation=false; //判断是否有按钮被选中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
public void init(){
mainFrame=new JFrame("JKJ连连看");
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(new BorderLayout());
centerPanel=new JPanel();
southPanel=new JPanel();
northPanel=new JPanel();
thisContainer.add(centerPanel,"Center");
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");
diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));
diamondsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
exitButton=new JButton("退出");
exitButton.addActionListener(this);
resetButton=new JButton("重列");
resetButton.addActionListener(this);
newlyButton=new JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
southPanel.add(newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));
northPanel.add(fractionLable);
mainFrame.setVisible(true);
public void randomBuild() {
int randoms,cols,rows;
while(grid[cols][rows]!=0) {
this.grid[cols][rows]=randoms;
public void fraction(){
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));
public void reload() {
int n=0,cols,rows;
if(this.grid[i][j]!=0) {
save[n]=this.grid[i][j];
n++;
n=n-1;
this.grid=grid;
while(n=0) {
this.grid[cols][rows]=save[n];
n--;
mainFrame.setVisible(false);
init();
if(grid[i+1][j+1]==0)
diamondsButton[i][j].setVisible(false);
public void estimateEven(int placeX,int placeY,JButton bz) {
if(pressInformation==false) {
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
pressInformation=true;
else {
x0=x;
y0=y;
fristMsg=secondMsg;
firstButton=secondButton;
if(fristMsg==secondMsg secondButton!=firstButton){
xiao();
public void xiao() { //相同的情况下能不能消去.仔细分析,不一条条注释
if((x0==x (y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)(y0==y))){ //判断是否相邻
remove();
else{
if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空
if (yj) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边
for (i=y-1;i=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0) {
k=0;
break;
else{ k=1; } //K=1说明通过了第一次验证
if (k==1) {
linePassOne();
if (yj){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边
for (i=y+1;i=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0){
else { k=1; }
if (k==1){
if (y==j ) {
if (x0==x) {
if (x0x) {
for (n=x0;n=x-1;n++ ) {
if (grid[n][j]!=0) {
if(grid[n][j]==0 n==x-1) {
for (n=x0;n=x+1 ;n-- ) {
if(grid[n][j]==0 n==x+1) {
if (grid[i][y0]==0) {
if (xi) {
for (j=x-1;j=i ;j-- ) {
if (grid[j][y]!=0) {
rowPassOne();
for (j=x+1;j=i;j++ ) {
if (x==i) {
if (y0==y) {
if (y0y) {
for (n=y0;n=y-1 ;n++ ) {
if (grid[i][n]!=0) {
if(grid[i][n]==0 n==y-1) {
for (n=y0;n=y+1 ;n--) {
if(grid[i][n]==0 n==y+1) {
public void linePassOne(){
if (y0j){ //第一按钮同行空按钮在左边
for (i=y0-1;i=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮
if (grid[x0][i]!=0) {
if (y0j){ //第一按钮同行空按钮在与第二按钮之间
for (i=y0+1;i=j ;i++){
public void rowPassOne(){
if (x0i) {
for (j=x0-1;j=i ;j-- ) {
if (grid[j][y0]!=0) {
for (j=x0+1;j=i ;j++ ) {
public void remove(){
firstButton.setVisible(false);
secondButton.setVisible(false);
fraction();
pressInformation=false;
grid[x0][y0]=0;
grid[x][y]=0;
if(e.getSource()==newlyButton){
this.grid = grid;
randomBuild();
if(e.getSource()==exitButton)
if(e.getSource()==resetButton)
reload();
if(e.getSource()==diamondsButton[cols][rows])
estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);
lianliankan llk = new lianliankan();
llk.randomBuild();
llk.init();
以上就是土嘎嘎小编为大家整理的java的rpg游戏代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!