Skip to content

Instantly share code, notes, and snippets.

@HaruhiroTakahashi
Created May 28, 2015 07:57
Show Gist options
  • Save HaruhiroTakahashi/1aed3333addbc7e57ea5 to your computer and use it in GitHub Desktop.
Save HaruhiroTakahashi/1aed3333addbc7e57ea5 to your computer and use it in GitHub Desktop.
2015-05-28
package Java;
public class Console
{
/**
* 序章を表示します
*/
public static void putJyosyou()
{
put("ギムレーが" + "世界を滅ぼそうとしています。");
putStatus();
}
public static void putStatus()
{
put("---------------------------------------");
put( getStatusString());
put("---------------------------------------");
}
public static String getStatusString()
{
return(" "+part01.name + " LV" + part01.lv + " HP" + part01.hp + " "+part01.gold+"円");
}
/**
* ゲームオーバー画面を表示します
*/
public static void putGameOver()
{
put(part01.name + "はギムレーに敗れましたorz");
put("GAME OVER");
}
/**
* ゲームクリア画面を表示します
*/
public static void putGameClear()
{
String s0 = part01.name + "はギムレーを倒しました!";
put(s0);
System.out.print("レベル" + part01.lv);
if(part01.lv>200){
put("なのでギムレーはゴミでした。www");
}else if(part01.lv>120){
put("なのでギムレーは弱すぎでした。");
}else if(part01.lv>80){
put("なので余裕でした。");
}else if(part01.lv>50){
put("でしたが倒せました。");
}else{
put("でしたので苦戦しました。");
}
put("GAME CLEAR!");
}
/**
* 引数で指定された文字列を表示します
*
* @param str 表示対象の文字列
*/
public static void put(String str)
{
System.out.println(str);
}
}
package Java;
import java.io.IOException;
public class part01
{
static String name = "ルキナ";
static int lv = 30; //プレイヤーのレベル
static int hp = 30; //プレイヤーのHP
static double gold=50.0; //プレイヤーの所持金
public static void main(String[] args) throws java.io.IOException
{
Console.putJyosyou(); //序章を表示
putCommand(); //コマンドを表示
if(hp==0){
return;
}
//魔王を倒しに行く
if(lv<40){ //レベルが40未満の場合
Console.putGameOver(); //ゲームオーバー画面を表示
}else{ //レベルが40以上の場合
Console.putGameClear(); //ゲームクリアの画面を表示
}
}
/**
* コマンドを表示します。
*
* @exception IOException 入出力エラーが発生した場合
*/
public static void putCommand() throws java.io.IOException
{
Console.put("1. 邪竜ギムレーを倒しに行く");
Console.put("2. 修行する");
Console.put("3. 宿屋に泊まる");
// int c = inputCommand();
switch(inputCommand()){
case '1':{ //1. 魔王を倒しに行く
Console.put("邪竜ギムレーが現れた!");
break;
}
case '2':{ //2. 修行する
syugyou();
break;
}
case '3':{ //3.宿屋に泊まる
if(gold>9.95){
hp=lv;
gold -= 9.95;
}
Console.putStatus();
putCommand();
break;
}
}
}
/**
* 修行する
*/
public static void syugyou() throws java.io.IOException
{
java.util.Random r = new java.util.Random();
//敵出現
int e = r.nextInt(9)+1; //敵の数
Console.put(" 敵が " + e + " 匹、現れた");
String m = "(´・ω・`)";
String s = "";
for(int i=0; i<e; i=i+1){
s = s + m;
}
Console.put(s);
//HPを減らす
int d = r.nextInt(8);
hp -= d;
if(hp<0){
hp = 0;
}
Console.put(name + " は、 "+ d +" ポイントのダメージを受けた!");
//レベル上昇
lv += e;
Console.put("レベルが"+lv+"になった");
Console.putStatus();
if(hp==0){
Console.put("GAME OVER");
}else{
putCommand();
}
}
/**
* 入力ストリームからデータの次のバイトを読み込みます。
* 改行コードは無視されます。
*
* @return データの次のバイト ストリームの終わりに達した場合は-1
* @IOException 入出力エラーが発生した場合
*/
public static int inputCommand() throws java.io.IOException
{
int c = System.in.read();
if(c==10 || c==13){ //改行コード(CR又はLF)の場合
return(inputCommand());
}
return(c);
}
}
package Java;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class part18
{
public static void main(String[] args) throws java.io.IOException
{
System.out.println("やっはろー");
// ウインドウフレームを作成し、表示
JFrame jf = new JFrame();
jf.setBounds(20, 40, 1000, 800);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 親パネルを作成し、フレームに貼り付け
JPanel jp = new JPanel(new java.awt.GridLayout(3, 1));
jp.setBackground(Color.BLACK);
jf.add(jp);
//フォントを作成
Font f = new Font(Font.MONOSPACED,
Font.BOLD,
40);
// レイアウト1行目
// パネルを作成し、親パネルに貼り付け
JPanel jpChild = new JPanel();
jpChild.setBackground(Color.BLUE);
jp.add(jpChild);
// ラベルを作成し、子パネルに貼り付け
JLabel jlChild = new JLabel(Console.getStatusString());
jlChild.setFont(f);
jlChild.setForeground(Color.WHITE);
jpChild.add(jlChild);
// レイアウト2行目
// パネルを作成し、親パネルに貼り付け
JPanel jpChild2 = new JPanel();
jpChild2.setBackground(Color.CYAN);
jp.add(jpChild2);
/*
// 選択肢をパネルに貼り付け
JLabel jlMain = new JLabel("<html>1. 魔王を倒しに行く<br>2. 修行する<br>3. 宿屋に泊まる");
jlMain.setFont(f);
jpChild2.add(jlMain);
*/
// モンスターをパネルに貼り付け
File file = new File("test1.jpeg"); //ファイルを開く
BufferedImage ba = ImageIO.read(file); //画像全体を読み込む
int cw = 44; //セルサイズ・幅
int ch = 44; //セルサイズ・高さ
int sw = 200; //表示サイズ・幅
int sh = 200; //表示サイズ・高さ
putMonster(jpChild2, ba, 3, 4, cw, ch, sw, sh); //モンスター 3-4 表示
putMonster(jpChild2, ba, 6, 4, cw, ch, sw, sh); //モンスター 6-4 表示
putMonster(jpChild2, ba, 9, 4, cw, ch, sw, sh); //モンスター 9-4 表示
// レイアウト3行目
// ラベルを作成し、親パネルに貼り付け
JLabel jl = new JLabel("魔王が世界を滅ぼそうとしています。");
jl.setFont(f);
jl.setForeground(new Color(255, 128, 0));
jp.add(jl);
// 表示
jf.setVisible(true);
}
/**
* モンスターを表示します。
*
* @param jpChild2 表示対象パネル
* @param ba 画像全体
* @param x 表示するセル座標x
* @param y 表示するセル座標y
* @param cw セルの大きさ・幅
* @param ch セルの大きさ・高さ
* @param sw 表示サイズ・幅
* @param sh 表示サイズ・高さ
*/
static void putMonster(JPanel jpChild2, BufferedImage ba, int x, int y, int cw, int ch, int sw, int sh)
{
BufferedImage bs = ba.getSubimage(cw*x, ch*y, cw, ch);
Image im = bs.getScaledInstance(sw, sh, Image.SCALE_DEFAULT);
ImageIcon ii = new ImageIcon(im); //JLabel用に型変換
JLabel jlImage = new JLabel(ii); //画像部品を作成
jlImage.setSize(sw, sh); //画像サイズを設定
jpChild2.add(jlImage); //画像を貼り付け
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment