java游戏排行榜代码 经典java游戏合集90个
packagecom.lxi;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
publicclassRpg{
@SuppressWarnings("unchecked")
publicstaticvoidmain(String[]args)throwsException{
System.out.println("在这里输入两个人物进行PK,以英文逗号分隔:[BM,DH,MK]");
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
Class<Person>c1;
Class<Person>c2;
try{
Stringtemp=br.readLine();
String[]str=temp.split(",");
if(str.length!=2){
thrownewException("输入格式有误,按默认PK");
}
c1=(Class<Person>)Class.forName("com.lxi."
+str[0].toUpperCase());
c2=(Class<Person>)Class.forName("com.lxi."
+str[1].toUpperCase());
}catch(Exceptione){
//TODOAuto-generatedcatchblock
c1=(Class<Person>)Class.forName("com.lxi.BM");
c2=(Class<Person>)Class.forName("com.lxi.DH");
}
try{
Personp1=c1.newInstance();
Personp2=c2.newInstance();
longtime=System.currentTimeMillis();
longnextTime1=(long)(time+p1.coldTime*1000);//
longnextTime2=(long)(time+p2.coldTime*1000);//发动攻击的时刻
System.out.println("---游戏开始---");
while(true){
longcurrenTime=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(ClassCastExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InstantiationExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalAccessExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
}
}
packagecom.lxi;
importjava.util.Random;
classBMextendsPerson{
publicBM(){
val=650;
coldTime=1.5;
fight=40;
chanceHit=3;
chanceDefense=3;
waitTime=0;
}
intcount=0;//防御技能发动的次数
inttemp=40;//攻击力,值同fight
booleanhitFlag=false;
booleandefenseFlag=false;
Randomrand=newRandom();
publicvoidhit(Personp){
if(rand.nextInt(10)<chanceHit){
fight=fight*2;//发动双倍攻击
hitFlag=true;
}
inthurt=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;
}
publicintdefense(Personp){
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);
}
}
}
returnp.fight;
}
}
classMKextendsPerson{
publicMK(){
val=700;
coldTime=2.5;
fight=50;
chanceDefense=6;
chanceHit=3;
waitTime=0;
}
booleanhitFlag=false;
booleandefenseFlag=false;
Randomrand=newRandom();
publicvoidhit(Personp){
if(rand.nextInt(10)<chanceHit){
p.waitTime=3;//使对方晕眩3s
hitFlag=true;
}
inthurt=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;
}
publicintdefense(Personp){
if(rand.nextInt(10)<chanceDefense){
defenseFlag=true;
returnp.fight/2;//防御技能发动,伤害减半
}
returnp.fight;
}
}
packagecom.lxi;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.util.Random;
//三个人物的基类
abstractclassPerson{
intval;//生活值
doublecoldTime;//冷却时刻
intwaitTime;//晕眩时刻
intfight;//攻击力
intchanceHit;//发起主动技能的概率
intchanceDefense;//发起防御技能的概率
abstractvoidhit(Personp);//攻击技能
abstractintdefense(Personp);//防御技能,返回被伤害点数
}
classDHextendsPerson{
publicDH(){
val=600;
coldTime=1.0;
fight=30;
chanceHit=3;//表示30%的概率
chanceDefense=3;
waitTime=0;
}
Randomrand=newRandom();
booleanhitFlag=false;//主动技能发动的标识
booleandefenseFlag=false;//防御技能发动的标识
publicvoidhit(Personp){
if(rand.nextInt(10)<chanceHit){//发动主动技能
inthurt=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{//进行普通攻击
inthurt=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;//重置标记,下次重用
}
publicintdefense(Personp){
if(rand.nextInt(10)<chanceDefense){
defenseFlag=true;//标记防御技能已经发动
return0;
}else{
returnp.fight;
}
}
}
二、求壹个简单又有趣的JAVA小游戏代码
具体如下:
连连看的小源码
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;//
分别记录两次62616964757a686964616fe59b9ee7ad9431333335326239被选中的按钮
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;//消除方式控制
代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的制度体系。
对于字符和Unicode数据的位玩法的定义,此玩法代表特定字母、数字或符号(例如 0x20代表壹个空格,而 0x74代表字符“t”)。一些数据类型每个字符运用壹个字节;每个字节可以具有 256个不同的位玩法中的壹个玩法。
在计算机中,字符由不同的位玩法(ON或 OFF)表示。每个字节有 8位,这 8位可以有 256种不同的 ON和 OFF组合玩法。对于运用 1个字节存储每个字符的程序,通过给每个位玩法指派字符可表示最多 256个不同的字符。2个字节有 16位,这 16位可以有 65,536种唯一的 ON和 OFF组合玩法。运用 2个字节表示每个字符的程序可表示最多 65,536个字符。
单字节代码页是字符定义,这些字符映射到每个字节也许有的 256种位玩法中的每一种。代码页定义大致写字符、数字、符号以及!、@、#、%等独特字符的位玩法。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页。
虽然用于表示 A到 Z拉丁字母表字符的位玩法在全部的代码页中都相同,但用于表示重音字符(如"é"和"á")的位玩法在不同的代码页中却不同。如果在运行不同代码页的计算机间交换数据,必须将全部字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失。
如果某个数据库为来自许多不同民族的客户端提供服务,则很难为该数据库选择这样一种代码页,使其包括全部客户端计算机所需的全部扩展字符。在代码页间不停地转换需要花费大量的处理时刻。
三、求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){
}
}
}