CUIプログラミングの練習に、作ってみた。
しかし、完成度は、60%も満たないが止めた。 www
# 打ち込みが面倒なので。。。 orz
# 気が向いたなら続きを作るかも。。。
# (肝心の?占い結果を書いてある shikicard.java を作ってない)
| ←元ネタはコレ 24枚のカードから8枚を、 あるルール選択、配置し、 カードの内容と関係を見ながら判断 |
// main.javapackage localhost.localhost;
/**
* 陰陽師 「式神」占い
* 〜 恋愛 〜
*
*/public class main {
public static void main(String[] args) {
int cnt;
// シャッフル回数 int cho;
// 指定カードの何番目 // シャッフル回数を 指定 実行 System.out.println("カードをシャッフルする回数を指定してください(0以上):"
+"(ex. 3[Enter])");
cnt = readNumber();
placeShiki start = new placeShiki();
start.shuffle(cnt);
System.out.println("シャッフル "+cnt+"回:[完了]");
// 指定カードの何番目 System.out.println("カードを1枚選んでください。(1-24)番目を指定:(ex. 3[Enter])");
cho = readNumber();
start.cRoutine(cho);
System.out.println("触機 "+cho+"選択終了");
System.out.println(start.finlist);
/*
* 占い判定
*/ gThink self = new gThink();
// 自身(触機 − 1課) get(0)−get(1) self.gThin(start.finlist.get(0), start.finlist.get(1));
System.out.println("自身(触機 − 1課)\n" + self.hantei);
// 相手(触機 − 3課) self.gThin(start.finlist.get(0), start.finlist.get(3));
System.out.println("相手(触機 − 3課)\n" + self.hantei);
// 基本的相性(1課 − 3課) self.gThin(start.finlist.get(1), start.finlist.get(3));
System.out.println("基本的相性(1課 − 3課)\n" + self.hantei);
// 3関(1課−2課、1課−3課、2課−3課) self.gThin(start.finlist.get(1), start.finlist.get(2));
System.out.println("3関(1課−2課)\n" + self.hantei);
self.gThin(start.finlist.get(1), start.finlist.get(3));
System.out.println("3関(1課−3課)\n" + self.hantei);
self.gThin(start.finlist.get(2), start.finlist.get(3));
System.out.println("3関(2課−3課)\n" + self.hantei);
// 未来(触機−末伝) self.gThin(start.finlist.get(0), start.finlist.get(7));
System.out.println("未来(触機−末伝)\n" + self.hantei);
}
// キーボードから数字を入力するメソッド public static int readNumber(){
byte b[] = new byte[100];
try{
System.in.read(b);
return Integer.parseInt((new String(b)).trim());
}catch(Exception e){
return 0;
}
}
}
********************************************************************************
// placeShiki.javapackage localhost.localhost;
import java.util.Collections;
import java.util.ArrayList;
public class placeShiki {
// フィールド ArrayList
list; // テンポラリー 24枚 [ ][ ][ ][ ] ・ ・ ・[ ][ ][ ]
ArrayList finlist; // [0.触機][1.一課][2.二課][3.三課][4.四課][5.初伝][6.中伝][7.末伝]
// メソッド
public placeShiki(){
list = new ArrayList(); // tmp(ルーチン)処理のための配列
finlist = new ArrayList(); // 盤上の配列
}
// シャッフル
public ArrayList shuffle(int a){
int cntx = a;
for ( int i = 0; i <= 23; i++ ) {
list.add(i);
}
// リストの内容をシャッフルします。
for(int i=0; i <= cntx-1; i++ ){
Collections.shuffle(list);
}
return list;
}
/*
* 一枚選び、その上のカードを 後ろに配置
* 選んだカードは、2nd カード位置へ
* 選んだカードのプロパティから Numを取り出す。
*/
public ArrayList cRoutine(int b){
int jNum;
// 触機カードを選択し、上のカードは後ろに、カードは盤上に配置
jNum = list.get(b-1); //カードの十二支を表す。配置で使用。
System.out.println("触機カードの十二支"+jNum);
for(int i = 0; i <= b-2; i++){
list.add(list.get(0));
list.remove(0);
}
finlist.add(list.get(0));
list.remove(0);
// 1課〜4課/初伝〜末伝を上記と同じ方法
while(finlist.size()!= 8){
if(jNum <= 11){
for(int i = 0; i <= jNum-1; i++){
list.add(list.get(0));
list.remove(0);
}
finlist.add(list.get(0));
jNum = list.get(0);
list.remove(0);
}
else{
jNum = jNum - 12;
for(int i = 0; i <= jNum-1; i++){
list.add(list.get(0));
list.remove(0);
}
finlist.add(list.get(0));
jNum = list.get(0);
list.remove(0);
}
}
return finlist;
}
}
***********************************************************************
// gThink.java
package localhost.localhost;
import java.util.HashMap;
import java.util.Map;
/**
* 【 五行判定 】
*
* 引数に、2枚のカードの識別子を 与えると
* 相生・比和 or 相克の判定を "0"と"1"で返す。
*
* @author f1r3
*
*/
public class gThink {
// フィールド
int hantei; // 相生 or 比和 :0 相克: 1
Map map; // 識別子と五行(木、火、土、金、水)
// メソッド
public gThink(){
// 識別子と五行(木、火、土、金、水)の
// Tableの 作成
map = new HashMap();
}
public int gThin(int xId, int yId){
// キーと値のペアを追加
map.put(0,"土");
map.put(1,"火");
map.put(2,"火");
map.put(3,"木");
map.put(4,"土");
map.put(5,"木");
map.put(6,"土");
map.put(7,"金");
map.put(8,"土");
map.put(9,"水");
map.put(10,"金");
map.put(11,"水");
map.put(12,"水");
map.put(13,"土");
map.put(14,"金");
map.put(15,"金");
map.put(16,"土");
map.put(17,"火");
map.put(18,"火");
map.put(19,"土");
map.put(20,"木");
map.put(21,"木");
map.put(22,"土");
map.put(23,"水");
// 値取り出す
String str1 = map.get(xId);
String str2 = map.get(yId);
/*
* 木−土、木−金 ⇒ 相克
* 恋愛占いの場合は 比和も OKで捉えるので
* else で括る
*
* 相生・比和(正の意味) ⇒ 1
* 相克 ⇒ 0
* を返す。
*/
if(str1.equals("木")){
if(str2.equals("土")||str2.endsWith("金")){
return hantei=0; // 相克
}
else{
return hantei=1; // 相生・比和
}
}
else if(str1.equals("火")){
if(str2.equals("水")||str2.endsWith("金")){
return hantei=0; // 相克
}
else{
return hantei=1; // 相生・比和
}
}
else if(str1.equals("土")){
if(str2.equals("木")||str2.endsWith("水")){
return hantei=0; // 相克
}
else{
return hantei=1; // 相生・比和
}
}
else if(str1.equals("金")){
if(str2.equals("木")||str2.endsWith("火")){
return hantei=0; // 相克
}
else{
return hantei=1; // 相生・比和
}
}
else if(str1.equals("水")){
if(str2.equals("土")||str2.endsWith("火")){
return hantei=0; // 相克
}
else{
return hantei=1; // 相生・比和
}
}
else{
System.out.println("その他");
return 0;
}
}
}