2016年5月29日日曜日

新武将の能力設定

完全な個人用の備忘録


今年に入ってから1ヶ月位プログラミングを学んだけれど、株や投資を初めて、興味がすっかりとそっちに移っていた。
でも、今信長の野望創造を再びやっていて、新武将の能力の設定を決めるのが面倒くさいので、勉強も兼ねて、能力値をランダム生成してくれるプログラムを作成。
以下のコードは、全能力値について、80を標準にして、前後20まで数値の変動を許すもの。
プラス20やマイナス20が出る確率は、それぞれプラマイ0が出る確率の1/2になっている。
声や特性は男性のものに限定している。
このコードをdokojavaとかに入れれば、簡単にランダム武将が作成できる。
因みにこれで出た今のところベストっぽいのはこれかな?
実際の所、能力の数値よりも、戦法や成長タイプのほうが大事だと思うけれど、それも悪くない。
声が少年なのは、ちょっとアレかもしれないけれどね。

統率  94   武勇  95   知略  86   政治  100   総合  375
声  若者:少年    主義 中道   士道  利   必要忠誠  5   格付  A
戦法  一の太刀   成長タイプ   長宗我部元親型

↓以下コード

public class bushou {
 public static void main (String [] args){
//変数設定
int t; int tk=80; int th=20;//統率
int b; int bk=80; int bh=20;//武勇
int c; int ck=80; int ch=20;//知略
int s; int sk=80; int sh=20;//政治
int r1; int r2; int r2max; int r2min;

//統率
r1=new java.util.Random().nextInt(th*2+1)-th;
r2max=Math.min(th,th-r1);
r2min=Math.max(-th,-th-r1);
r2=new java.util.Random().nextInt(r2max-r2min+1)+r2min;
t=tk+r1+r2;

//武勇
r1=new java.util.Random().nextInt(bh*2+1)-bh;
r2max=Math.min(bh,bh-r1);
r2min=Math.max(-bh,-bh-r1);
r2=new java.util.Random().nextInt(r2max-r2min+1)+r2min;
b=bk+r1+r2;

//知略
r1=new java.util.Random().nextInt(ch*2+1)-ch;
r2max=Math.min(ch,ch-r1);
r2min=Math.max(-ch,-ch-r1);
r2=new java.util.Random().nextInt(r2max-r2min+1)+r2min;
c=ck+r1+r2;

//政治
r1=new java.util.Random().nextInt(sh*2+1)-sh;
r2max=Math.min(sh,sh-r1);
r2min=Math.max(-sh,-sh-r1);
r2=new java.util.Random().nextInt(r2max-r2min+1)+r2min;
s=sk+r1+r2;

//基本能力表示
System.out.println("統率  "+t+"   武勇  "+b+"   知略  "+c+"   政治  "+s+"   総合  " + (t+b+c+s));

//声  男 0~17  女18~21
String[]voice={"若者:少年","若者:まじめ","若者:豪傑","若者:策士","若者:冷静","若者:お人好し","若者:勇将","中年:まじめ",
"中年:豪傑","中年:熱血","中年:お人好し","中年:猛将","中年:冷静","中年:策士","中年:威厳","中年:軍師","中年:文官",
"老人:百戦錬磨","女性:勇壮","女性:聡明","女性:快活"};
int vn =new java.util.Random().nextInt(18); /*女性の場合 int vn =new java.util.Random().nextInt(4)+18;
                                                                                                                  男性の場合 int vn =new java.util.Random().nextInt(18);*/

//主義
String[]shu={"保守","中道","革新"};
int gi =new java.util.Random().nextInt(3);

//士道
String[]shi={"名","家","才","利","義","創造","道","志"};
int dou =new java.util.Random().nextInt(8);

//格付
char[]kaku={'S','A','B','C'};
int duke=new java.util.Random().nextInt(4);

//戦法
String[]sem={"神速","臨戦","鬨の声","鼓舞","急襲","釣瓶撃ち","狙い撃ち","用心","咆哮","穿ち抜け","叱咤","激励",
"狙撃","追い打ち","瓶割り","空蝉","蜻蛉切","赤鬼","虎狩り","鎮西一","坂東太郎","鬼小島","仁王門","老練",
"皆朱の槍","釣り野伏","奥義一閃","一の太刀","無刀取り","槍の又左","六文銭","七本槍","先懸之衆","死兵",
"三日月","伊達者","肥前の熊","笹の才蔵","三本の矢","黒田武士","車懸り","啄木鳥","三段撃ち","三河魂","八咫烏",
"千成瓢箪","五色備え","怒号","底力","撹乱","足止め","挑発","扇動","気勢崩し","逆撫で","離間","雷神",
"今孔明","今張良","詭計百出","表裏比興"};
int pou=new java.util.Random().nextInt(61);

//成長タイプ  男91 女102
String[]grow={"中庸型","統率型","武勇型","知略型","政治型","万能型","万能統率型","万能武勇型","万能知略型",
"万能政治型","勇将型","勇将射撃特化型","勇将槍特化型","勇将騎馬特化型","猛将型","猛将射撃特化型","猛将槍特化型",
"猛将騎馬特化型","文官型","外交僧型","宰相型","軍師型","副将型","軍団長型","梟雄型","海戦名人型","籠城型",
"籠城達人型","築城名手型","夜叉型","鬼型","虎型","捨て奸型","信仰心型","大筒型","鉄甲船型","下忍型","忍型",
"上忍型","剣豪型","不幸型","幸運型","明智光秀型","井伊直政型","石田三成型","今川義元型","上杉謙信型",
"織田信長型","片倉小十郎型","加藤清正型","蒲生氏郷型","吉川元春型","黒田官兵衛型","高坂昌信型","小早川隆景型",
"鈴木重秀型","斎藤道三型","榊原康政型","佐久間信盛型","真田昌幸型","真田幸隆型","真田幸村型","島津家久型",
"島津義弘型","滝川一益型","武田信玄型","武田信虎型","竹中半兵衛型","立花宗茂型","伊達政宗型","長宗我部元親型",
"藤堂高虎型","徳川家康型","豊臣秀吉型","長尾為景型","原虎胤型","古田織部型","北条氏綱型","北条氏康型",
"北条綱成型","細川忠興型","堀秀政型","本願寺顕如型","本多忠勝型","前田慶次型","前田利家型","毛利隆元型",
"毛利元就型","最上義光型","山県昌景型","山中鹿介型","女性型","女武将型","薄幸美人型","良妻賢母型",
"女戦国大名型","くのいち型","阿国型","ガラシャ型","帰蝶型","小松姫型","立花誾千代型"};
int gn=new java.util.Random().nextInt(91);


System.out.println("声  "+voice[vn]+"    主義 "+shu[gi]+"   士道  "+shi[dou]+
"   必要忠誠  "+(new java.util.Random().nextInt(15)+1)+"   格付  "+kaku[duke]);
System.out.println("戦法  "+sem[pou]+"   成長タイプ   "+grow[gn]);
 }
}