전투 시뮬레이터 틀 작성 중

This commit is contained in:
2018-08-24 01:09:17 +09:00
parent f5161a5b99
commit 6aa606f2fa
6 changed files with 234 additions and 62 deletions
+1 -9
View File
@@ -452,15 +452,7 @@ echo "
</tr>
";
$citylevel = [];
$citylevel[1] = "수";
$citylevel[2] = "진";
$citylevel[3] = "관";
$citylevel[4] = "이";
$citylevel[5] = "소";
$citylevel[6] = "중";
$citylevel[7] = "대";
$citylevel[8] = "특";
$citylevel = getCityLevelList();
$query = "select city,name,gen1,gen2,gen3,level,region,gen1set,gen2set,gen3set from city where nation='{$nation['nation']}' order by region,level desc,binary(name)"; // 도시 이름 목록
$cityresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
+178 -1
View File
@@ -1,2 +1,179 @@
<?php
namespace sammo;
namespace sammo;
include "lib.php";
include "func.php";
$session = Session::requireLogin()->setReadOnly();
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$startYear = $gameStor->getValue('startyear');
?>
<!DOCTYPE html>
<html>
<head>
<title><?=UniqueConst::$serverName?>: 전투 시뮬레이터</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=1100" />
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
<?=WebUtil::printCSS('../d_shared/common.css')?>
<?=WebUtil::printCSS('../css/config.css')?>
<?=WebUtil::printCSS('css/common.css')?>
<?=WebUtil::printCSS('css/battle_simulator.css')?>
<?=WebUtil::printJS('../d_shared/common_path.js')?>
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
<?=WebUtil::printJS('js/common.js')?>
<?=WebUtil::printJS('js/battle_simulator.js')?>
</head>
<body>
<div id="container">
<div class="card mb-3">
<div class="card-header">
전역 설정
</div>
<div class="card-body">
<div class="row">
<div class="col-sm-6">
<div class="input-group">
<input type="number" class="form-control" id="year" aria-describedby="text_year" value="183" min="<?=$startYear?>">
<div class="input-group-append">
<span class="input-group-text" id="text_year">년</span>
</div>
<input type="number" class="form-control" id="month" aria-describedby="text_month" value="1" min="1" max="12">
<div class="input-group-append">
<span class="input-group-text" id="text_month">월</span>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="btn-toolbar" role="toolbar">
<div class="btn-group mr-2" role="group">
<button type="button" class="btn btn-secondary">저장</button>
<button type="button" class="btn btn-secondary">불러오기</button>
</div>
<div class="btn-group mr-2" role="group">
<button type="button" class="btn btn-secondary">내보내기</button>
<button type="button" class="btn btn-secondary">가져오기</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm">
<div class="card">
<div class="card-header">
출병국 설정
</div>
<div class="card-body">
<div class="input-group mb-1">
<div class="input-group-prepend">
<span class="input-group-text">기술</span>
</div>
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
<div class="input-group-append">
<span class="input-group-text">등급</span>
</div>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">국가 성향</span>
</div>
<select class="custom-select form_nation_type">
<?php foreach(getNationTypeList() as $typeID => [$name,$pros,$cons]): ?>
<option value="<?=$typeID?>"><?=$name?> (<?=$pros?>, <?=$cons?>)</option>
<?php endforeach; ?>
</select>
</div>
<div class="input-group mb-1">
<div class="input-group-prepend">
<span class="input-group-text">도시 규모</span>
</div>
<select class="custom-select form_city_level">
<?php foreach(getCityLevelList() as $levelID => $name): ?>
<option value="<?=$levelID?>"><?=$name?></option>
<?php endforeach; ?>
</select>
<div class="input-group-prepend">
<span class="input-group-text">수도</span>
</div>
<div class="input-group-append btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="is_attacker_capital" id="is_attacker_capital_y" autocomplete="off">Y
</label>
<label class="btn btn-secondary active">
<input type="radio" name="is_attacker_capital" id="is_attacker_capital_n" autocomplete="off" checked>N
</label>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm">
<div class="card">
<div class="card-header">
수비국 설정
</div>
<div class="card-body">
<div class="input-group mb-1">
<div class="input-group-prepend">
<span class="input-group-text">기술</span>
</div>
<input type="number" class="form-control form_tech" value="1" min="0" max="12">
<div class="input-group-append">
<span class="input-group-text">등급</span>
</div>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">국가 성향</span>
</div>
<select class="custom-select form_nation_type">
<?php foreach(getNationTypeList() as $typeID => [$name,$pros,$cons]): ?>
<option value="<?=$typeID?>"><?=$name?> (<?=$pros?>, <?=$cons?>)</option>
<?php endforeach; ?>
</select>
</div>
<div class="input-group mb-1">
<div class="input-group-prepend">
<span class="input-group-text">도시 규모</span>
</div>
<select class="custom-select form_city_level">
<?php foreach(getCityLevelList() as $levelID => $name): ?>
<option value="<?=$levelID?>"><?=$name?></option>
<?php endforeach; ?>
</select>
<div class="input-group-prepend">
<span class="input-group-text">수도</span>
</div>
<div class="input-group-append btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-secondary">
<input type="radio" name="is_defender_capital" id="is_defender_capital_y" autocomplete="off">Y
</label>
<label class="btn btn-secondary active">
<input type="radio" name="is_defender_capital" id="is_defender_capital_n" autocomplete="off" checked>N
</label>
</div>
</div>
<div class="input-group mb-1">
<div class="input-group-prepend">
<span class="input-group-text">수비</span>
</div>
<input type="number" class="form-control form_def" id="month" value="1000" min="10" step="10">
<div class="input-group-prepend">
<span class="input-group-text">성벽</span>
</div>
<input type="number" class="form-control form_wall" id="month" value="1000" min="0" step="10">
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
+4
View File
@@ -0,0 +1,4 @@
#container{
width:1024px;
margin:auto;
}
+19 -52
View File
@@ -8,25 +8,14 @@ namespace sammo;
* Side effect 없이 값의 변환만을 수행하는 함수들의 모음.
*/
function NationCharCall($call) {
switch($call) {
case '명가': $type =13; break;
case '음양가': $type =12; break;
case '종횡가': $type =11; break;
case '불가': $type =10; break;
case '도적': $type = 9; break;
case '오두미도':$type = 8; break;
case '태평도': $type = 7; break;
case '도가': $type = 6; break;
case '묵가': $type = 5; break;
case '덕가': $type = 4; break;
case '병가': $type = 3; break;
case '유가': $type = 2; break;
case '법가': $type = 1; break;
default: $type = 0; break;
static $invTable = [];
if(!$invTable){
foreach(getNationTypeList() as $typeID => [$name, $pros, $cons]){
$invTable[$name] = $typeID;
}
}
return $type;
return $invTable[$name]??0;
}
function CharCall($call) {
@@ -251,24 +240,17 @@ function getSpecialInfo(?int $type):?string{
return $infoText[$type][1]??null;
}
function getNationType($type) {
switch($type) {
case 13: $call = '명 가'; break;
case 12: $call = '음 양 가'; break;
case 11: $call = '종 횡 가'; break;
case 10: $call = '불 가'; break;
case 9: $call = '도 적'; break;
case 8: $call = '오 두 미 도'; break;
case 7: $call = '태 평 도'; break;
case 6: $call = '도 가'; break;
case 5: $call = '묵 가'; break;
case 4: $call = '덕 가'; break;
case 3: $call = '병 가'; break;
case 2: $call = '유 가'; break;
case 1: $call = '법 가'; break;
case 0: $call = '-'; break;
function getNationType(int $type) {
static $cache = [];
if(\key_exists($type, $cache)){
return $cache[$type];
}
return $call;
$text = getNationTypeList()[$type][0]??'-';
$text = join(' ', StringUtil::splitString($text));
$cache[$type] = $text;
return $text;
}
@@ -287,24 +269,9 @@ function getConnect($con) {
return $conname;
}
function getNationType2($type) {
switch($type) {
case 13: $call = '<font color=cyan>기술↑ 인구↑</font> <font color=magenta>쌀수입↓ 수성↓</font>'; break;
case 12: $call = '<font color=cyan>내정↑ 인구↑</font> <font color=magenta>기술↓ 전략↓</font>'; break;
case 11: $call = '<font color=cyan>전략↑ 수성↑</font> <font color=magenta>금수입↓ 내정↓</font>'; break;
case 10: $call = '<font color=cyan>민심↑ 수성↑</font> <font color=magenta>금수입↓</font>'; break;
case 9: $call = '<font color=cyan>계략↑</font> <font color=magenta>금수입↓ 치안↓ 민심↓</font>'; break;
case 8: $call = '<font color=cyan>쌀수입↑ 인구↑</font> <font color=magenta>기술↓ 수성↓ 내정↓</font>'; break;
case 7: $call = '<font color=cyan>인구↑ 민심↑</font> <font color=magenta>기술↓ 수성↓</font>'; break;
case 6: $call = '<font color=cyan>인구↑</font> <font color=magenta>기술↓ 치안↓</font>'; break;
case 5: $call = '<font color=cyan>수성↑</font> <font color=magenta>기술↓</font>'; break;
case 4: $call = '<font color=cyan>치안↑인구↑ 민심↑</font> <font color=magenta>쌀수입↓ 수성↓</font>'; break;
case 3: $call = '<font color=cyan>기술↑ 수성↑</font> <font color=magenta>인구↓ 민심↓</font>'; break;
case 2: $call = '<font color=cyan>내정↑ 민심↑</font> <font color=magenta>쌀수입↓</font>'; break;
case 1: $call = '<font color=cyan>금수입↑ 치안↑</font> <font color=magenta>인구↓ 민심↓</font>'; break;
case 0: $call = '-'; break;
}
return $call;
function getNationType2(int $type) {
[$name, $pros, $cons] = getNationTypeList()[$type]??['-', '', ''];
return "<font color=cyan>{$pros}</font> <font color=magenta>{$cons}</font>";
}
function getLevel($level, $nlevel=8) {
+32
View File
@@ -6,6 +6,38 @@ namespace sammo;
*/
function getNationTypeList():array{
$table = [
13=>['명가', '기술↑ 인구↑', '쌀수입↓ 수성↓'],
12=>['음양가', '내정↑ 인구↑', '기술↓ 전략↓'],
11=>['종횡가', '전략↑ 수성↑', '금수입↓ 내정↓'],
10=>['불가', '민심↑ 수성↑', '금수입↓'],
9=>['도적', '계략↑', '금수입↓ 치안↓ 민심↓'],
8=>['오두미도', '쌀수입↑ 인구↑', '기술↓ 수성↓ 내정↓'],
7=>['태평도', '인구↑ 민심↑', '기술↓ 수성↓'],
6=>['도가', '인구↑', '기술↓ 치안↓'],
5=>['묵가', '수성↑', '기술↓'],
4=>['덕가', '치안↑인구↑ 민심↑', '쌀수입↓ 수성↓'],
3=>['병가', '기술↑ 수성↑', '인구↓ 민심↓'],
2=>['유가', '내정↑ 민심↑', '쌀수입↓'],
1=>['법가', '금수입↑ 치안↑', '인구↓ 민심↓'],
];
return $table;
}
function getCityLevelList():array{
return [
1 => '수',
2 => '진',
3 => '관',
4 => '이',
5 => '소',
6 => '중',
7 => '대',
8 => '특'
];
}
/**
* 게임 내부에 사용하는 유틸리티 함수들을 분리
*/
View File