为 Java 基于文本的游戏制作控制台
Making A Console For A Java Text Based Game
所以,我一直在尝试用 Java 制作一个简单的基于文本的角色扮演游戏,并且进展顺利,我的朋友们也想玩,但他们不是很懂技术,所以很难告诉他们获得 IDE 或使用 CMD,所以我想知道是否有办法将我的基于文本的游戏变成 window,例如使用 JFrame 或其他东西。我只需要一个显示文本的 window 和底部的一个栏,让用户输入他们想要的内容(有点像 CMD)。到目前为止,我还不知道该怎么做,因为我在编码方面还很陌生,有人可以帮助我吗?它可能就像一个简单的控制台,因为我目前不在寻找复杂的 GUI 或任何东西。
import java.util.Scanner;
public class Client {
private static String command, commandAttack, commandShop;
private static int monsterRat = 100;
private static int monsterWeasel = 110;
private static int monsterBear = 120;
private static int hp = 100;
private static int level = 0;
private static int mana = 10;
private static int expTotal = 0;
private static int goldTotal = 0;
private static int commandItem, commandBuy, arrow,
shuriken, bomb, hpPotion, mpPotion, potion, items;
public Skills skillObject = new Skills();
public static void title(){
System.out.println("Welcome To My First Game!");
}
//BEGINNING OF MONSTERS
//First Monster - Easy
public static void huntRat(){
Scanner console = new Scanner(System.in);
System.out.println("A Monster Appeared! Its a Wild Rat! ");
do
{
System.out.print("What Skill do you want to use?"
+ "\nBasic,Heal,Item,Run: ");
commandAttack = console.next();
System.out.println("");
if(commandAttack.equalsIgnoreCase("Run")){
game();
}
if(commandAttack.equalsIgnoreCase("Basic")){
int attack = (int)(15 + Math.random()*40-15+1);
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
}
if(commandAttack.equalsIgnoreCase("Heal") && mana >= 2){
int healing = (int)(10 + Math.random()*35-10+1);
hp = Math.min(hp + healing, 100);
mana = Math.max(mana - 2, 0);
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n"
+ "Mana: " + mana + "/10\n");
}
if(commandAttack.equalsIgnoreCase("Item") && items >= 1){
System.out.println("Choose what to use::\n");
System.out.println("1. Arrow: " + arrow + "\n"
+ "2. Shurkiken: " + shuriken + "\n"
+ "3. Bombs: " + bomb + "\n"
+ "4. Small HP-Potion: " + hpPotion + "\n"
+ "5. Mana-Potion: " + mpPotion + "\n"
+ "6. Large HP-Potion: " + potion + "\n");
commandItem = console.nextInt();
if(commandItem == 1 && arrow >= 1){
System.out.println("You fire an arrow at the monster!");
int attack = 20;
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
arrow--;
}
if(commandItem == 2 && shuriken >= 1){
System.out.println("You throw a shuriken at the monster!");
int attack = 40;
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
shuriken--;
}
if(commandItem == 3 && bomb >= 1){
System.out.println("-You throw a bomb at the monster!");
int attack = 60;
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
bomb--;
}
if(commandItem == 4 && hpPotion >= 1){
int healing = 20;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
hpPotion--;
}
if(commandItem == 5 && mpPotion >= 1){
mana = 10;
System.out.println("-You now have 10/10 mana!");
mpPotion--;
}
if(commandItem == 6 && potion >= 1){
int healing = 40;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
potion--;
}
}
if(monsterRat > 0){
int dmg = (int)(10 + Math.random()*25-10+1);
hp = hp - dmg;
System.out.println("-The Wild Rat has done: " + dmg
+ " HP of damage to you!\n" + "-You have: "
+ hp + "hp left!\n");
}
if(hp <= 0){ //Die = GameOver
System.out.println("-You have died! Game Over!");
System.exit(0);
}
mana = Math.min(mana + 1, 10);
}
while(monsterRat >= 1);
//after battle if wins
int expRat = (int)(5 + Math.random()*50-5+1);
int goldRat = (int)(5 + Math.random()*10-5+1);
goldTotal = goldTotal + goldRat;
expTotal = expTotal + expRat;
System.out.println("You have gotten: " + expRat
+ " EXP!\nYou picked up: "
+ goldRat + " gold!\n");
monsterRat = 100;
}
//Second Monster - Intermediate
public static void huntWeasel(){
Scanner console = new Scanner(System.in);
System.out.println("A Monster Appeared! Its a Wild Weasel! ");
do
{
System.out.print("What Skill do you want to use?"
+ "\nBasic,Heal,Item,Run: ");
commandAttack = console.next();
System.out.println("");
if(commandAttack.equalsIgnoreCase("Run")){
game();
}
if(commandAttack.equalsIgnoreCase("Basic")){
int attack = (int)(15 + Math.random()*40-15+1);
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Weasel has: "
+ monsterWeasel + " HP left!\n");
}
if(commandAttack.equalsIgnoreCase("Heal") && mana >= 2){
int healing = (int)(10 + Math.random()*35-10+1);
hp = Math.min(hp + healing, 100);
mana = Math.max(mana - 2, 0);
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n"
+ "Mana: " + mana + "/10\n");
}
if(commandAttack.equalsIgnoreCase("Item") && items >= 1){
System.out.println("Choose what to use::\n");
System.out.println("1. Arrow: " + arrow + "\n"
+ "2. Shurkiken: " + shuriken + "\n"
+ "3. Bombs: " + bomb + "\n"
+ "4. Small HP-Potion: " + hpPotion + "\n"
+ "5. Mana-Potion: " + mpPotion + "\n"
+ "6. Large HP-Potion: " + potion + "\n");
commandItem = console.nextInt();
if(commandItem == 1 && arrow >= 1){
System.out.println("You fire an arrow at the monster!");
int attack = 20;
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Rat has: "
+ monsterWeasel + " HP left!\n");
arrow--;
}
if(commandItem == 2 && shuriken >= 1){
System.out.println("You throw a shuriken at the monster!");
int attack = 40;
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Rat has: "
+ monsterWeasel + " HP left!\n");
shuriken--;
}
if(commandItem == 3 && bomb >= 1){
System.out.println("You throw a bomb at the monster!");
int attack = 60;
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Rat has: "
+ monsterWeasel + " HP left!\n");
bomb--;
}
if(commandItem == 4 && hpPotion >= 1){
int healing = 20;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
hpPotion--;
}
if(commandItem == 5 && mpPotion >= 1){
mana = 10;
System.out.println("-You now have 10/10 mana!");
mpPotion--;
}
if(commandItem == 6 && potion >= 1){
int healing = 40;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
potion--;
}
}
if(monsterWeasel > 0){
int dmg = (int)(10 + Math.random()*30-10+1);
hp = hp - dmg;
System.out.println("-The Wild Weasel has done: " + dmg
+ " HP of damage to you!\n" + "-You have: " + hp + "hp left!\n");
}
if(hp <= 0){ //Die = GameOver
System.out.println("-You have died! Game Over!");
System.exit(0);
}
mana = Math.min(mana + 1, 10);
}
while(monsterWeasel >= 1);
//after battle if wins
int expWeasel = (int)(20 + Math.random()*75-20+1);
int goldWeasel = (int)(10 + Math.random()*30-10+1);
goldTotal = goldTotal + goldWeasel;
expTotal = expTotal + expWeasel;
System.out.println("You have gotten: " + expWeasel
+ " EXP!\nYou picked up: "
+ goldWeasel + " gold!\n");
monsterWeasel = 110;
}
//Third Monster - Hardest
public static void huntBear(){
Scanner console = new Scanner(System.in);
System.out.println("A Monster Appeared! Its a Wild Bear! ");
do
{
System.out.print("What Skill do you want to use?"
+ "\nBasic,Heal,Item,Run: ");
commandAttack = console.next();
System.out.println("");
if(commandAttack.equalsIgnoreCase("Run")){
game();
}
if(commandAttack.equalsIgnoreCase("Basic")){
int attack = (int)(15 + Math.random()*40-15+1);
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Bear has: "
+ monsterBear + " HP left!\n");
}
if(commandAttack.equalsIgnoreCase("Heal") && mana >= 2){
int healing = (int)(10 + Math.random()*35-10+1);
hp = Math.min(hp + healing, 100);
mana = Math.max(mana - 2, 0);
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n"
+ "Mana: " + mana + "/10\n");
}
if(commandAttack.equalsIgnoreCase("Item") && items >= 1){
System.out.println("Choose what to use::\n");
System.out.println("1. Arrow: " + arrow + "\n"
+ "2. Shurkiken: " + shuriken + "\n"
+ "3. Bombs: " + bomb + "\n"
+ "4. Small HP-Potion: " + hpPotion + "\n"
+ "5. Mana-Potion: " + mpPotion + "\n"
+ "6. Large HP-Potion: " + potion + "\n");
commandItem = console.nextInt();
if(commandItem == 1 && arrow >= 1){
System.out.println("You fire an arrow at the monster!");
int attack = 20;
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Rat has: "
+ monsterBear + " HP left!\n");
arrow--;
}
if(commandItem == 2 && shuriken >= 1){
System.out.println("You throw a shuriken at the monster!");
int attack = 40;
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Rat has: "
+ monsterBear + " HP left!\n");
shuriken--;
}
if(commandItem == 3 && bomb >= 1){
System.out.println("You throw a bomb at the monster!");
int attack = 60;
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Rat has: "
+ monsterBear + " HP left!\n");
bomb--;
}
if(commandItem == 4 && hpPotion >= 1){
int healing = 20;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
hpPotion--;
}
if(commandItem == 5 && mpPotion >= 1){
mana = 10;
System.out.println("-You now have 10/10 mana!");
mpPotion--;
}
if(commandItem == 6 && potion >= 1){
int healing = 40;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
potion--;
}
}
if(monsterBear > 0){
int dmg = (int)(14 + Math.random()*35-14+1);
hp = hp - dmg;
System.out.println("-The Wild Bear has done: " + dmg
+ " HP of damage to you!\n"
+ "-You have: " + hp + "hp left!\n");
}
if(hp <= 0){ //Die = GameOver
System.out.println("-You have died! Game Over!");
System.exit(0);
}
mana = Math.min(mana + 1, 10);
}
while(monsterBear >= 1);
//after battle if wins
int expBear = (int)(40 + Math.random()*120-40+1);
int goldBear = (int)(30 + Math.random()*50-30+1);
goldTotal = goldTotal + goldBear;
expTotal = expTotal + expBear;
System.out.println("You have gotten: " + expBear
+ " EXP!\nYou picked up: "
+ goldBear + " gold!\n");
monsterBear = 120;
}
//END OF MONSTERS
public static void shop(){
do
{
Scanner console = new Scanner(System.in);
System.out.print("----------------------------\nWhat do you want to"
+ " shop for? | Weapons | Items | Magic | Leave |\n"
+ "Choice: ");
commandShop = console.next();
System.out.println();
if(commandShop.equalsIgnoreCase("Weapons")){
System.out.print("What do you want to buy?\n1. Arrow - 10g"
+ " DMG: 20 (lvl: 0)\n2. Shuriken - 20g DMG: 40 (lvl: 1)"
+ "\n3. Bomb - 40g DMG: 60 (lvl: 2)\n"
+ "Choice: ");
commandBuy = console.nextInt();
System.out.println();
if(commandBuy == 1 && goldTotal >= 10){
arrow++;
items++;
goldTotal = goldTotal - 10;
System.out.println("You now have: " + arrow + " Arrow(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 2 && goldTotal >= 20 && level >= 1){
shuriken++;
items++;
goldTotal = goldTotal - 20;
System.out.println("You now have: " + shuriken
+ " Shuriken(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 3 && goldTotal >= 40 && level >= 2){
bomb++;
items++;
goldTotal = goldTotal - 40;
System.out.println("You now have: " + bomb + " Bomb(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
else{
System.out.println("You do not have the required level or gold"
+ "need to buy this weapon!");
}
}
if(commandShop.equalsIgnoreCase("Items")){
System.out.print("What do you want to buy?\n"
+ "1. Small HP-Potion - 10g Heal: 20 (lvl: 0)\n"
+ "2. Mana-Potion - 20g Full-Mana (lvl: 1)\n"
+ "3. Large HP-Potion - 40g Heal: 40 (lvl: 2)\n"
+ "Choice: ");
commandShop = console.next();
System.out.println();
if(commandBuy == 1 && goldTotal >= 10){
hpPotion++;
items++;
goldTotal = goldTotal - 10;
System.out.println("You now have: "
+ hpPotion + " Small HP-Potion(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 2 && goldTotal >= 20 && level >= 1){
mpPotion++;
items++;
goldTotal = goldTotal - 20;
System.out.println("You now have: "
+ mpPotion + " Mana-Potion(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 3 && goldTotal >= 40 && level >= 2){
potion++;
items++;
goldTotal = goldTotal - 40;
System.out.println("You now have: "
+ potion + " Large HP-Potions(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
else{
System.out.println("You do not have the required level or gold"
+ "need to buy this item!");
}
}
if(commandShop.equalsIgnoreCase("Magic")){
System.out.println("Not implemented yet!\n");
}
}
while(!commandShop.equalsIgnoreCase("Leave"));
}
public static void game(){ // last static void used - User input For Home
Scanner console = new Scanner(System.in);
do
{
System.out.print("-----------------------\n"
+ "What do you want to do?\n"
+ "Hunt | Shop | Sleep | Skills |\nStats | LevelUp"
+ " | Inventory |\n"
+ "Choice: ");
command=console.next();
System.out.println();
if(command.equalsIgnoreCase("Hunt")){
int monsterChance = (int)(1 + Math.random()*100-1+1);
if(monsterChance <= 50){
huntRat();
}
if(monsterChance <=90 && monsterChance > 50){
huntWeasel();
}
if(monsterChance <=100 && monsterChance > 90){
huntBear();
}
}
if(command.equalsIgnoreCase("Sleep")){
hp = 100;
mana = 10;
System.out.println("You HP is now at 100"
+ " and your Mana is at 10!");
}
if(command.equalsIgnoreCase("Stats")){
System.out.println("You have: " + expTotal
+ " exp!\nYou have: " + goldTotal + " gold!\n"
+ "Your level is: " + level);
}
if(command.equalsIgnoreCase("LevelUp")){
if(expTotal >= 100){
level++;
System.out.println("CONGRATS! You have leveled up!"
+ "\nYour level is: " + level);
expTotal = expTotal - 100;
}
else{
System.out.println("You don't have enough exp! Hunt more!");
}
}
if(command.equalsIgnoreCase("Shop")){
System.out.println("Welcome to the shops!");
shop();
}
if(command.equalsIgnoreCase("Inventory")){
System.out.println("You have: " + arrow + " arrow(s)\n"
+ "You have: " + shuriken + " shuriken(s)\n"
+ "You have: " + bomb + " bomb(s)\n"
+ "You have: " + hpPotion + " Small Hp-Potion(s)\n"
+ "You have: " + mpPotion + " Mana-Potion(s)\n"
+ "You have: " + potion + " Large Hp-Potion(s)\n");
}
if(command.equalsIgnoreCase("Skills")){
Skills skillObject = new Skills();
skillObject.skills();
}
}
while(!command.equalsIgnoreCase("STOP")); //how to stop game
System.out.println("You have left the game without saving!");
}
public static void main(String[] args) {
title();
game();
}
}
您可以在批处理文件中写入以下内容
@echo off
java -jar TextBasedRPG.jar
并告诉您的朋友 运行 .bat 文件。
是的,如果它启动了 JFrame,可能是 运行 通过双击 JAR。
看看 https://github.com/mafagafogigante/dungeon,我的一个项目,它使用 JFrame 作为类似终端的 window(也是一个基于文本的游戏)。您可以从发布选项卡下载已编译的 JAR 文件。
如果您尝试使用 执行此操作,那么您将需要在游戏中执行此操作 class
private ChanDown frame;
public static void main(String[] args) {
frame = new ChanDown();
frame.setVisible(true);
title();
game();
}
并将所有 System.out.println("text here");
更改为 frame.textArea.append("\n" + text here);
移除你的扫描仪,并只接受这段代码的所有输入:
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 10) { //this is key code for pressing enter
// do the code you want to do when you get the text entered
}
}
});
但很明显,您需要进行大量调整才能使所有功能按预期工作...
所以,我一直在尝试用 Java 制作一个简单的基于文本的角色扮演游戏,并且进展顺利,我的朋友们也想玩,但他们不是很懂技术,所以很难告诉他们获得 IDE 或使用 CMD,所以我想知道是否有办法将我的基于文本的游戏变成 window,例如使用 JFrame 或其他东西。我只需要一个显示文本的 window 和底部的一个栏,让用户输入他们想要的内容(有点像 CMD)。到目前为止,我还不知道该怎么做,因为我在编码方面还很陌生,有人可以帮助我吗?它可能就像一个简单的控制台,因为我目前不在寻找复杂的 GUI 或任何东西。
import java.util.Scanner;
public class Client {
private static String command, commandAttack, commandShop;
private static int monsterRat = 100;
private static int monsterWeasel = 110;
private static int monsterBear = 120;
private static int hp = 100;
private static int level = 0;
private static int mana = 10;
private static int expTotal = 0;
private static int goldTotal = 0;
private static int commandItem, commandBuy, arrow,
shuriken, bomb, hpPotion, mpPotion, potion, items;
public Skills skillObject = new Skills();
public static void title(){
System.out.println("Welcome To My First Game!");
}
//BEGINNING OF MONSTERS
//First Monster - Easy
public static void huntRat(){
Scanner console = new Scanner(System.in);
System.out.println("A Monster Appeared! Its a Wild Rat! ");
do
{
System.out.print("What Skill do you want to use?"
+ "\nBasic,Heal,Item,Run: ");
commandAttack = console.next();
System.out.println("");
if(commandAttack.equalsIgnoreCase("Run")){
game();
}
if(commandAttack.equalsIgnoreCase("Basic")){
int attack = (int)(15 + Math.random()*40-15+1);
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
}
if(commandAttack.equalsIgnoreCase("Heal") && mana >= 2){
int healing = (int)(10 + Math.random()*35-10+1);
hp = Math.min(hp + healing, 100);
mana = Math.max(mana - 2, 0);
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n"
+ "Mana: " + mana + "/10\n");
}
if(commandAttack.equalsIgnoreCase("Item") && items >= 1){
System.out.println("Choose what to use::\n");
System.out.println("1. Arrow: " + arrow + "\n"
+ "2. Shurkiken: " + shuriken + "\n"
+ "3. Bombs: " + bomb + "\n"
+ "4. Small HP-Potion: " + hpPotion + "\n"
+ "5. Mana-Potion: " + mpPotion + "\n"
+ "6. Large HP-Potion: " + potion + "\n");
commandItem = console.nextInt();
if(commandItem == 1 && arrow >= 1){
System.out.println("You fire an arrow at the monster!");
int attack = 20;
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
arrow--;
}
if(commandItem == 2 && shuriken >= 1){
System.out.println("You throw a shuriken at the monster!");
int attack = 40;
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
shuriken--;
}
if(commandItem == 3 && bomb >= 1){
System.out.println("-You throw a bomb at the monster!");
int attack = 60;
System.out.println("-You have done: "
+ attack + " damage");
monsterRat = monsterRat - attack;
System.out.println("-The Wild Rat has: "
+ monsterRat + " HP left!\n");
bomb--;
}
if(commandItem == 4 && hpPotion >= 1){
int healing = 20;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
hpPotion--;
}
if(commandItem == 5 && mpPotion >= 1){
mana = 10;
System.out.println("-You now have 10/10 mana!");
mpPotion--;
}
if(commandItem == 6 && potion >= 1){
int healing = 40;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
potion--;
}
}
if(monsterRat > 0){
int dmg = (int)(10 + Math.random()*25-10+1);
hp = hp - dmg;
System.out.println("-The Wild Rat has done: " + dmg
+ " HP of damage to you!\n" + "-You have: "
+ hp + "hp left!\n");
}
if(hp <= 0){ //Die = GameOver
System.out.println("-You have died! Game Over!");
System.exit(0);
}
mana = Math.min(mana + 1, 10);
}
while(monsterRat >= 1);
//after battle if wins
int expRat = (int)(5 + Math.random()*50-5+1);
int goldRat = (int)(5 + Math.random()*10-5+1);
goldTotal = goldTotal + goldRat;
expTotal = expTotal + expRat;
System.out.println("You have gotten: " + expRat
+ " EXP!\nYou picked up: "
+ goldRat + " gold!\n");
monsterRat = 100;
}
//Second Monster - Intermediate
public static void huntWeasel(){
Scanner console = new Scanner(System.in);
System.out.println("A Monster Appeared! Its a Wild Weasel! ");
do
{
System.out.print("What Skill do you want to use?"
+ "\nBasic,Heal,Item,Run: ");
commandAttack = console.next();
System.out.println("");
if(commandAttack.equalsIgnoreCase("Run")){
game();
}
if(commandAttack.equalsIgnoreCase("Basic")){
int attack = (int)(15 + Math.random()*40-15+1);
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Weasel has: "
+ monsterWeasel + " HP left!\n");
}
if(commandAttack.equalsIgnoreCase("Heal") && mana >= 2){
int healing = (int)(10 + Math.random()*35-10+1);
hp = Math.min(hp + healing, 100);
mana = Math.max(mana - 2, 0);
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n"
+ "Mana: " + mana + "/10\n");
}
if(commandAttack.equalsIgnoreCase("Item") && items >= 1){
System.out.println("Choose what to use::\n");
System.out.println("1. Arrow: " + arrow + "\n"
+ "2. Shurkiken: " + shuriken + "\n"
+ "3. Bombs: " + bomb + "\n"
+ "4. Small HP-Potion: " + hpPotion + "\n"
+ "5. Mana-Potion: " + mpPotion + "\n"
+ "6. Large HP-Potion: " + potion + "\n");
commandItem = console.nextInt();
if(commandItem == 1 && arrow >= 1){
System.out.println("You fire an arrow at the monster!");
int attack = 20;
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Rat has: "
+ monsterWeasel + " HP left!\n");
arrow--;
}
if(commandItem == 2 && shuriken >= 1){
System.out.println("You throw a shuriken at the monster!");
int attack = 40;
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Rat has: "
+ monsterWeasel + " HP left!\n");
shuriken--;
}
if(commandItem == 3 && bomb >= 1){
System.out.println("You throw a bomb at the monster!");
int attack = 60;
System.out.println("-You have done: "
+ attack + " damage");
monsterWeasel = monsterWeasel - attack;
System.out.println("-The Wild Rat has: "
+ monsterWeasel + " HP left!\n");
bomb--;
}
if(commandItem == 4 && hpPotion >= 1){
int healing = 20;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
hpPotion--;
}
if(commandItem == 5 && mpPotion >= 1){
mana = 10;
System.out.println("-You now have 10/10 mana!");
mpPotion--;
}
if(commandItem == 6 && potion >= 1){
int healing = 40;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
potion--;
}
}
if(monsterWeasel > 0){
int dmg = (int)(10 + Math.random()*30-10+1);
hp = hp - dmg;
System.out.println("-The Wild Weasel has done: " + dmg
+ " HP of damage to you!\n" + "-You have: " + hp + "hp left!\n");
}
if(hp <= 0){ //Die = GameOver
System.out.println("-You have died! Game Over!");
System.exit(0);
}
mana = Math.min(mana + 1, 10);
}
while(monsterWeasel >= 1);
//after battle if wins
int expWeasel = (int)(20 + Math.random()*75-20+1);
int goldWeasel = (int)(10 + Math.random()*30-10+1);
goldTotal = goldTotal + goldWeasel;
expTotal = expTotal + expWeasel;
System.out.println("You have gotten: " + expWeasel
+ " EXP!\nYou picked up: "
+ goldWeasel + " gold!\n");
monsterWeasel = 110;
}
//Third Monster - Hardest
public static void huntBear(){
Scanner console = new Scanner(System.in);
System.out.println("A Monster Appeared! Its a Wild Bear! ");
do
{
System.out.print("What Skill do you want to use?"
+ "\nBasic,Heal,Item,Run: ");
commandAttack = console.next();
System.out.println("");
if(commandAttack.equalsIgnoreCase("Run")){
game();
}
if(commandAttack.equalsIgnoreCase("Basic")){
int attack = (int)(15 + Math.random()*40-15+1);
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Bear has: "
+ monsterBear + " HP left!\n");
}
if(commandAttack.equalsIgnoreCase("Heal") && mana >= 2){
int healing = (int)(10 + Math.random()*35-10+1);
hp = Math.min(hp + healing, 100);
mana = Math.max(mana - 2, 0);
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n"
+ "Mana: " + mana + "/10\n");
}
if(commandAttack.equalsIgnoreCase("Item") && items >= 1){
System.out.println("Choose what to use::\n");
System.out.println("1. Arrow: " + arrow + "\n"
+ "2. Shurkiken: " + shuriken + "\n"
+ "3. Bombs: " + bomb + "\n"
+ "4. Small HP-Potion: " + hpPotion + "\n"
+ "5. Mana-Potion: " + mpPotion + "\n"
+ "6. Large HP-Potion: " + potion + "\n");
commandItem = console.nextInt();
if(commandItem == 1 && arrow >= 1){
System.out.println("You fire an arrow at the monster!");
int attack = 20;
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Rat has: "
+ monsterBear + " HP left!\n");
arrow--;
}
if(commandItem == 2 && shuriken >= 1){
System.out.println("You throw a shuriken at the monster!");
int attack = 40;
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Rat has: "
+ monsterBear + " HP left!\n");
shuriken--;
}
if(commandItem == 3 && bomb >= 1){
System.out.println("You throw a bomb at the monster!");
int attack = 60;
System.out.println("-You have done: "
+ attack + " damage");
monsterBear = monsterBear - attack;
System.out.println("-The Wild Rat has: "
+ monsterBear + " HP left!\n");
bomb--;
}
if(commandItem == 4 && hpPotion >= 1){
int healing = 20;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
hpPotion--;
}
if(commandItem == 5 && mpPotion >= 1){
mana = 10;
System.out.println("-You now have 10/10 mana!");
mpPotion--;
}
if(commandItem == 6 && potion >= 1){
int healing = 40;
hp = hp + healing;
System.out.println("-You have healed: " + healing
+ "\n-You have now: " + hp + " hp!\n");
potion--;
}
}
if(monsterBear > 0){
int dmg = (int)(14 + Math.random()*35-14+1);
hp = hp - dmg;
System.out.println("-The Wild Bear has done: " + dmg
+ " HP of damage to you!\n"
+ "-You have: " + hp + "hp left!\n");
}
if(hp <= 0){ //Die = GameOver
System.out.println("-You have died! Game Over!");
System.exit(0);
}
mana = Math.min(mana + 1, 10);
}
while(monsterBear >= 1);
//after battle if wins
int expBear = (int)(40 + Math.random()*120-40+1);
int goldBear = (int)(30 + Math.random()*50-30+1);
goldTotal = goldTotal + goldBear;
expTotal = expTotal + expBear;
System.out.println("You have gotten: " + expBear
+ " EXP!\nYou picked up: "
+ goldBear + " gold!\n");
monsterBear = 120;
}
//END OF MONSTERS
public static void shop(){
do
{
Scanner console = new Scanner(System.in);
System.out.print("----------------------------\nWhat do you want to"
+ " shop for? | Weapons | Items | Magic | Leave |\n"
+ "Choice: ");
commandShop = console.next();
System.out.println();
if(commandShop.equalsIgnoreCase("Weapons")){
System.out.print("What do you want to buy?\n1. Arrow - 10g"
+ " DMG: 20 (lvl: 0)\n2. Shuriken - 20g DMG: 40 (lvl: 1)"
+ "\n3. Bomb - 40g DMG: 60 (lvl: 2)\n"
+ "Choice: ");
commandBuy = console.nextInt();
System.out.println();
if(commandBuy == 1 && goldTotal >= 10){
arrow++;
items++;
goldTotal = goldTotal - 10;
System.out.println("You now have: " + arrow + " Arrow(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 2 && goldTotal >= 20 && level >= 1){
shuriken++;
items++;
goldTotal = goldTotal - 20;
System.out.println("You now have: " + shuriken
+ " Shuriken(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 3 && goldTotal >= 40 && level >= 2){
bomb++;
items++;
goldTotal = goldTotal - 40;
System.out.println("You now have: " + bomb + " Bomb(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
else{
System.out.println("You do not have the required level or gold"
+ "need to buy this weapon!");
}
}
if(commandShop.equalsIgnoreCase("Items")){
System.out.print("What do you want to buy?\n"
+ "1. Small HP-Potion - 10g Heal: 20 (lvl: 0)\n"
+ "2. Mana-Potion - 20g Full-Mana (lvl: 1)\n"
+ "3. Large HP-Potion - 40g Heal: 40 (lvl: 2)\n"
+ "Choice: ");
commandShop = console.next();
System.out.println();
if(commandBuy == 1 && goldTotal >= 10){
hpPotion++;
items++;
goldTotal = goldTotal - 10;
System.out.println("You now have: "
+ hpPotion + " Small HP-Potion(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 2 && goldTotal >= 20 && level >= 1){
mpPotion++;
items++;
goldTotal = goldTotal - 20;
System.out.println("You now have: "
+ mpPotion + " Mana-Potion(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
if(commandBuy == 3 && goldTotal >= 40 && level >= 2){
potion++;
items++;
goldTotal = goldTotal - 40;
System.out.println("You now have: "
+ potion + " Large HP-Potions(s)!\n"
+ "You now have: " + goldTotal + " gold!\n");
}
else{
System.out.println("You do not have the required level or gold"
+ "need to buy this item!");
}
}
if(commandShop.equalsIgnoreCase("Magic")){
System.out.println("Not implemented yet!\n");
}
}
while(!commandShop.equalsIgnoreCase("Leave"));
}
public static void game(){ // last static void used - User input For Home
Scanner console = new Scanner(System.in);
do
{
System.out.print("-----------------------\n"
+ "What do you want to do?\n"
+ "Hunt | Shop | Sleep | Skills |\nStats | LevelUp"
+ " | Inventory |\n"
+ "Choice: ");
command=console.next();
System.out.println();
if(command.equalsIgnoreCase("Hunt")){
int monsterChance = (int)(1 + Math.random()*100-1+1);
if(monsterChance <= 50){
huntRat();
}
if(monsterChance <=90 && monsterChance > 50){
huntWeasel();
}
if(monsterChance <=100 && monsterChance > 90){
huntBear();
}
}
if(command.equalsIgnoreCase("Sleep")){
hp = 100;
mana = 10;
System.out.println("You HP is now at 100"
+ " and your Mana is at 10!");
}
if(command.equalsIgnoreCase("Stats")){
System.out.println("You have: " + expTotal
+ " exp!\nYou have: " + goldTotal + " gold!\n"
+ "Your level is: " + level);
}
if(command.equalsIgnoreCase("LevelUp")){
if(expTotal >= 100){
level++;
System.out.println("CONGRATS! You have leveled up!"
+ "\nYour level is: " + level);
expTotal = expTotal - 100;
}
else{
System.out.println("You don't have enough exp! Hunt more!");
}
}
if(command.equalsIgnoreCase("Shop")){
System.out.println("Welcome to the shops!");
shop();
}
if(command.equalsIgnoreCase("Inventory")){
System.out.println("You have: " + arrow + " arrow(s)\n"
+ "You have: " + shuriken + " shuriken(s)\n"
+ "You have: " + bomb + " bomb(s)\n"
+ "You have: " + hpPotion + " Small Hp-Potion(s)\n"
+ "You have: " + mpPotion + " Mana-Potion(s)\n"
+ "You have: " + potion + " Large Hp-Potion(s)\n");
}
if(command.equalsIgnoreCase("Skills")){
Skills skillObject = new Skills();
skillObject.skills();
}
}
while(!command.equalsIgnoreCase("STOP")); //how to stop game
System.out.println("You have left the game without saving!");
}
public static void main(String[] args) {
title();
game();
}
}
您可以在批处理文件中写入以下内容
@echo off
java -jar TextBasedRPG.jar
并告诉您的朋友 运行 .bat 文件。
是的,如果它启动了 JFrame,可能是 运行 通过双击 JAR。
看看 https://github.com/mafagafogigante/dungeon,我的一个项目,它使用 JFrame 作为类似终端的 window(也是一个基于文本的游戏)。您可以从发布选项卡下载已编译的 JAR 文件。
如果您尝试使用
private ChanDown frame;
public static void main(String[] args) {
frame = new ChanDown();
frame.setVisible(true);
title();
game();
}
并将所有 System.out.println("text here");
更改为 frame.textArea.append("\n" + text here);
移除你的扫描仪,并只接受这段代码的所有输入:
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 10) { //this is key code for pressing enter
// do the code you want to do when you get the text entered
}
}
});
但很明显,您需要进行大量调整才能使所有功能按预期工作...