rpg游戏java代码 好玩的java游戏代码

发布时间:2025-12-09 21:27:37 浏览次数:4

准备用JAVA写个RPG游戏 自己现在还是小白。。。。JAVA脚本到底是什么?求解释。。。尽量说细点哇亲~~

java脚本:意思是 javaScript 这门脚本语言。与java 没有关系。

要了解javascript 点击

求java rpg小游戏源代码 最好是文字rpg 不需要很复杂 只是交作业用

连连看的小源码

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 diamondsButton[][] = new JButton[6][5];//游戏按钮数组

JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮

JLabel fractionLable=new JLabel("0"); //分数标签

JButton firstButton,secondButton; //分别记录两次被选中的按钮

int grid[][] = new int[8][7];//储存游戏按钮位置

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");

centerPanel.setLayout(new GridLayout(6,5));

for(int cols = 0;cols 6;cols++){

for(int rows = 0;rows 5;rows++ ){

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.setBounds(280,100,500,450);

mainFrame.setVisible(true);

}

public void randomBuild() {

int randoms,cols,rows;

for(int twins=1;twins=15;twins++) {

randoms=(int)(Math.random()*25+1);

for(int alike=1;alike=2;alike++) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=randoms;

}

}

}

public void fraction(){

fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));

}

public void reload() {

int save[] = new int[30];

int n=0,cols,rows;

int grid[][]= new int[8][7];

for(int i=0;i=6;i++) {

for(int j=0;j=5;j++) {

if(this.grid[i][j]!=0) {

save[n]=this.grid[i][j];

n++;

}

}

}

n=n-1;

this.grid=grid;

while(n=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

while(grid[cols][rows]!=0) {

cols=(int)(Math.random()*6+1);

rows=(int)(Math.random()*5+1);

}

this.grid[cols][rows]=save[n];

n--;

}

mainFrame.setVisible(false);

pressInformation=false; //这里一定要将按钮点击信息归为初始

init();

for(int i = 0;i 6;i++){

for(int j = 0;j 5;j++ ){

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;

x=placeX;

y=placeY;

secondMsg=grid[x][y];

secondButton=bz;

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{

for (j=0;j7;j++ ) {

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){

k=0;

break;

}

else { k=1; }

}

if (k==1){

linePassOne();

}

}

if (y==j ) {

linePassOne();

}

}

if (k==2) {

if (x0==x) {

remove();

}

if (x0x) {

for (n=x0;n=x-1;n++ ) {

if (grid[n][j]!=0) {

k=0;

break;

}

if(grid[n][j]==0 n==x-1) {

remove();

}

}

}

if (x0x) {

for (n=x0;n=x+1 ;n-- ) {

if (grid[n][j]!=0) {

k=0;

break;

}

if(grid[n][j]==0 n==x+1) {

remove();

}

}

}

}

}

for (i=0;i8;i++ ) { //列

if (grid[i][y0]==0) {

if (xi) {

for (j=x-1;j=i ;j-- ) {

if (grid[j][y]!=0) {

k=0;

break;

}

else { k=1; }

}

if (k==1) {

rowPassOne();

}

}

if (xi) {

for (j=x+1;j=i;j++ ) {

if (grid[j][y]!=0) {

k=0;

break;

}

else { k=1; }

}

if (k==1) {

rowPassOne();

}

}

if (x==i) {

rowPassOne();

}

}

if (k==2){

if (y0==y) {

remove();

}

if (y0y) {

for (n=y0;n=y-1 ;n++ ) {

if (grid[i][n]!=0) {

k=0;

break;

}

if(grid[i][n]==0 n==y-1) {

remove();

}

}

}

if (y0y) {

for (n=y0;n=y+1 ;n--) {

if (grid[i][n]!=0) {

k=0;

break;

}

if(grid[i][n]==0 n==y+1) {

remove();

}

}

}

}

}

}

}

public void linePassOne(){

if (y0j){ //第一按钮同行空按钮在左边

for (i=y0-1;i=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮

if (grid[x0][i]!=0) {

k=0;

break;

}

else { k=2; } //K=2说明通过了第二次验证

}

}

if (y0j){ //第一按钮同行空按钮在与第二按钮之间

for (i=y0+1;i=j ;i++){

if (grid[x0][i]!=0) {

k=0;

break;

}

else{ k=2; }

}

}

}

public void rowPassOne(){

if (x0i) {

for (j=x0-1;j=i ;j-- ) {

if (grid[j][y0]!=0) {

k=0;

break;

}

else { k=2; }

}

}

if (x0i) {

for (j=x0+1;j=i ;j++ ) {

if (grid[j][y0]!=0) {

k=0;

break;

}

else { k=2; }

}

}

}

public void remove(){

firstButton.setVisible(false);

secondButton.setVisible(false);

fraction();

pressInformation=false;

k=0;

grid[x0][y0]=0;

grid[x][y]=0;

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==newlyButton){

int grid[][] = new int[8][7];

this.grid = grid;

randomBuild();

mainFrame.setVisible(false);

pressInformation=false;

init();

}

if(e.getSource()==exitButton)

System.exit(0);

if(e.getSource()==resetButton)

reload();

for(int cols = 0;cols 6;cols++){

for(int rows = 0;rows 5;rows++ ){

if(e.getSource()==diamondsButton[cols][rows])

estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);

}

}

}

public static void main(String[] args) {

lianliankan llk = new lianliankan();

llk.randomBuild();

llk.init();

}

}

//old 998 lines

//new 318 lines

求一个简单RPG游戏的代码,JAva编写的

package com.lxi;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class Rpg {

[email protected]("unchecked")

    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;

        ClassPerson c2;

        try {

            String temp = br.readLine();

            String[] str = temp.split(",");

            if (str.length != 2) {

                throw new Exception("输入格式有误,按默认PK");

            }

            c1 = (ClassPerson) Class.forName("com.lxi."

                    + str[0].toUpperCase());

            c2 = (ClassPerson) Class.forName("com.lxi."

                    + str[1].toUpperCase());

        } catch (Exception e) {

            // TODO Auto-generated catch block

            c1 = (ClassPerson) Class.forName("com.lxi.BM");

            c2 = (ClassPerson) Class.forName("com.lxi.DH");

        }

        try {

            Person p1 = c1.newInstance();

            Person p2 = c2.newInstance();

            long time = System.currentTimeMillis();

            long nextTime1 = (long) (time + p1.coldTime*1000); //

            long nextTime2 = (long) (time + p2.coldTime*1000); //发动攻击的时间

            System.out.println("---游戏开始---");

            while (true) {

                long currenTime = System.currentTimeMillis();

 

                if (nextTime1  currenTime) {  //时间到则发动攻击

                    p1.hit(p2);

                    nextTime1 += p1.coldTime*1000 + p1.waitTime*1000; //下次攻击时间=冷却时间+被晕眩时间

                    p1.waitTime = 0;  //回合结束,重置被晕眩时间为0

                }

                if (nextTime2  currenTime) {

                    p2.hit(p1);

                    nextTime2 += p2.coldTime*1000 + p2.waitTime*1000;

                    p2.waitTime = 0;

                }

            }

        } catch (ClassCastException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (InstantiationException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IllegalAccessException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

package com.lxi;

import java.util.Random;

class BM extends Person {

    public BM() {

        val = 650;

        coldTime = 1.5;

        fight = 40;

        chanceHit = 3;

        chanceDefense = 3;

        waitTime = 0;

    }

 

    int count = 0;   //防御技能发动的次数

    int temp = 40;   //攻击力,值同fight

    boolean hitFlag = false;

    boolean defenseFlag = false;

    Random rand = new Random();

 

    public void hit(Person p) {

        if (rand.nextInt(10)  chanceHit) {

            fight = fight * 2;   //发动双倍攻击

            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;

                if (p.val = 0) {

                    System.out.println(this.getClass().getSimpleName() + "胜出!");

                    System.exit(0);

                }

            }

        }

        return p.fight;

    }

}

 

class MK extends Person {

    public MK() {

        val = 700;

        coldTime = 2.5;

        fight = 50;

        chanceDefense = 6;

        chanceHit = 3;

        waitTime = 0;

    }

 

    boolean hitFlag = false;

    boolean defenseFlag = false;

    Random rand = new Random();

 

    public void hit(Person p) {

        if (rand.nextInt(10)  chanceHit) {

            p.waitTime = 3;   //使对方晕眩3s

            hitFlag = true;

        }

        int hurt = p.defense(this);

        p.val = p.val - hurt;

        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) {

            defenseFlag = true;

            return p.fight / 2;   //防御技能发动,伤害减半

        }

        return p.fight;

    }

}

package com.lxi;

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.Random;

 

//三个人物的基类

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() {

        val = 600;

        coldTime = 1.0;

        fight = 30;

        chanceHit = 3;      //表示30%的概率

        chanceDefense = 3;

        waitTime = 0;

    }

 

    Random rand = new Random();

    boolean hitFlag = false;      //主动技能发动的标识

    boolean defenseFlag = false;  //防御技能发动的标识

 

    public void hit(Person p) {

        if (rand.nextInt(10)  chanceHit) {  //发动主动技能

            int hurt = p.defense(this);

            p.val = p.val - hurt;

            if (p.val = 0) {

                System.out.println(this.getClass().getSimpleName() + "胜出!");

                System.exit(0);

            }

            val = val + hurt;

            if (val  600)

                val = 600;

            hitFlag = true;     //标记主动技能已经发动

        } else {  //进行普通攻击

            int hurt = p.defense(this);

            p.val = p.val - hurt;

            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) {

            defenseFlag = true;   //标记防御技能已经发动

            return 0;

        } else {

            return p.fight;

        }

    }

}

请问安卓的某些rpg游戏(比如艾诺迪亚3)物品爆率、经验倍数、无限物品之类的是怎么改的?

那你搞过安卓开发吗?得要有一点经验才行,我把我破解的步骤告诉你吧。

下载doapk,用这个东西反编译游戏,反编译出来的代码是smali语言的。是java虚拟机执行的代码。然后就是在这些smali文件中打log(有些软件已经经过混绕器修改了,不过看多了就习惯了)。一步一步地摸索,直到找到你想要的数据。

现在的软件一般将重要的逻辑用ndk编写。这样反编译后就看不到他的逻辑了,不过理论上来说还是都可以修改的,像修改物品爆率,经验倍数,无限物品之类的,都可以修改的,就是麻烦一点,时间快的不到一个小时,时间慢的,要一天也有可能啊。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477