本文目录一览:
- 1、谁有Java 游戏编程开发教程这本书二人麻将游戏源代码或这本书的电子版
- 2、java游戏编程1A2B是一款十分经典的猜数字游戏,每局开始,计算机都会随机生成四个数字?
- 3、求一个简单RPG游戏的代码,JAva编写的
谁有Java 游戏编程开发教程这本书二人麻将游戏源代码或这本书的电子版
String []mapimg={"source/font.png","source/ks.jpg","source/1.jpg","source/2.png",
"source/3.jpg","source/youknow.jpg","fight/js.jpg","fight/js1.jpg"};
//获得工具包
Toolkit tool=Toolkit.getDefaultToolkit()
//开始图片
Image startimg;
//背景图片
Image bjimg,fontimg;
//画开始界面
public void drawstart(Graphics g){
startimg=tool.getImage(mapimg[1]);
g.drawImage(startimg, 0, 0, frame.getWidth(), frame.getHeight(), frame);
fontimg=tool.getImage(mapimg[0]);
g.drawImage(fontimg, 20, 30, frame);
};
这是我以前做的一个很简单的游戏中的几行代码,对你的问题,你要手动选择图片,那做个文件选择器,把图片路径作为方法参数传进去就ok了
java游戏编程1A2B是一款十分经典的猜数字游戏,每局开始,计算机都会随机生成四个数字?
package com.test;
import java.util.Random;
import java.util.Scanner;
/**
* 我的测试类
*
* @author 刘逸晖
*
*/
public class MyTest {
/**
* 生成不同的正整数随机数,返回字符串数组
*
* @param count
* 需要生成随机数的数量
* @param max
* 随机数的最大值
* @param min
* 随机数的最小值
* @return 生成的随机数
*/
private static String[] generateRandomNumber(int count, int min, int max) {
if (count 0 min -1 max min) {
String[] numbers = new String[count];
Random random = new Random();
// 生成随机数。
for (int i = 0; i numbers.length; i++) {
numbers[i] = min + random.nextInt(max - min) + "";
}
// 检查是否存在重复的随机数。
int equalIndex = areEqual(numbers);
while (equalIndex != -1) {
numbers[equalIndex] = min + random.nextInt(max - min) + "";
equalIndex = areEqual(numbers);
}
return numbers;
} else {// 参数不合法。
return null;
}
}
/**
* 判断字符串数组中的元素是否存在相等的
*
* @param array
* 预判断的数组
* @return 如果数组中有相等的元素,返回其下标;如果数组中没有相等的元素,或数组为空返回-1
*/
private static int areEqual(String[] array) {
if (array != null array.length 0) {
// 将数组中的每一个成员与其之前的所有成员进行比较,判断是否有相等的。
for (int current = 0; current array.length; current++) {
// 将当前便利的数组成员与其之前的所有成员进行比较,判断是否有相等的。
for (int previous = 0; previous current; previous++) {
if (array[current].equals(array[previous])) {
return previous;
}
}
}
}
return -1;
}
/**
* 搜索字符串数组
*
* @param array
* 数组
* @param value
* 预搜索的值
* @return 如果数组中有成员的值与预搜索的值相等返回成员下标,否则返回-1
*/
private static int search(String[] array, String value) {
if (array != null array.length -1 value != null) {
for (int i = 0; i array.length; i++) {
if (array[i].equals(value)) {
return i;
}
}
}
return -1;
}
public static void main(String[] args) {
System.out.println("欢迎你来到1a2b,输入n退出,输入y重新开始");
System.out.println("系统会随机产生4个0到9之间不同的数字,请你来猜");
System.out.println("输出a不仅代表你猜中了,还代表你猜对它的位置了哦!\r\n输出b则代表你猜中了,但位置不对哦");
// 开始循环,一次循环代表一局游戏。一局结束后立刻开启下一局。
while (true) {
System.out.println("新的一局开始了!");
// 产生随机数。
String[] randomNumbers = generateRandomNumber(4, 0, 9);
Scanner scanner = new Scanner(System.in);
// 创建变量存放输入记录。
String[] records = new String[] { "", "", "", "" };
// 创建变量存放ab结果。
String result = "";
// 请用户输入4次值。为什么请用户输入4次?因为数组中有4个成员。
for (int i = 0; i randomNumbers.length; i++) {
// 获得输入的值。
String inputValue = scanner.nextLine();
// 判断是否需要退出。
if (inputValue.equals("n") || inputValue.equals("")) {
System.out.println("Goodbye");
return;
}
// 创建变量定义是否忽略本次输入。
boolean ignore = false;
// 判断是否需要重新开始。
if (inputValue.equals("y")) {
ignore = true;
i = randomNumbers.length;
}
// 判断是否重复输入。
for (String record : records) {
if (inputValue.equals(record)) {
ignore = true;
i--;
System.out.println("这个值你已经输入过了哦!\r\n在给你一次机会。");
continue;
}
}
if (ignore) {
continue;
}
// 对输入的值进行搜索。
int searchResult = search(randomNumbers, inputValue);
// 如果搜索到了相关的值。
if (searchResult -1) {
// 记录。
records[i] = inputValue;
// 不仅搜索到了输入的值,并且位置正确。
if (searchResult == i) {
result = result + "a";
System.out.println("a");
} else {// 搜索到了输入的值,但位置错误。
result = result + "b";
System.out.println("b");
}
} else {// 输入错误。
System.out.println("这里没有这个值哦!\r\n再给你一次机会!");
i--;
}
}
System.out.println(result);
}
}
}
求一个简单RPG游戏的代码,JAva编写的
package com.lxi;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Rpg {
@SuppressWarnings("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;
}
}
}