정훈용

most parsing ended

[{"leagueId":"b82a4a63-6fe0-34c1-96c5-bd9a7b8b8201","queueType":"RANKED_SOLO_5x5","tier":"GRANDMASTER","rank":"I","summonerId":"1K6Gl993M9yX5HXBgA7aZP-nwrR2qNYoJGBMvkSVZ7pRNQ","summonerName":"Hide on bush","leaguePoints":570,"wins":603,"losses":590,"veteran":false,"inactive":false,"freshBlood":false,"hotStreak":false}]
\ No newline at end of file
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
......@@ -41,6 +41,10 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
*/
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
......@@ -100,6 +104,9 @@ public class MainActivity extends AppCompatActivity {
static int num_match = 5;
//사용하는 주요 유저
Player_info mainUser = new Player_info();
@Override
public void onCreate(Bundle savedInstanceState) {
......@@ -115,6 +122,14 @@ public class MainActivity extends AppCompatActivity {
summoner = (EditText) findViewById(R.id.summoner);
summonerCK = (Button) findViewById(R.id.summoner_check);
//유저 소개 부분 - 티어 인장과 이름
summoner_name = (TextView) findViewById(R.id.summoner_name);
//유저 내용
summoner_tier_tier = (TextView) findViewById(R.id.summoner_tier_tier);
summoner_tier_rank = (TextView) findViewById(R.id.summoner_tier_rank);
summoner_tier_point = (TextView) findViewById(R.id.summoner_tier_point);
// 일단 일반 5개의 프레임워크 정보---------------------------------
fr[0] = (FrameLayout) findViewById(R.id.fr1);
fr[1] = (FrameLayout) findViewById(R.id.fr2);
......@@ -244,10 +259,23 @@ public class MainActivity extends AppCompatActivity {
mode0();
String jj;
Player_info pp = new Player_info();
//Player_info mainUser = new Player_info();
//개인정보 가져오기
jj = json_reg("Hide on bush.json");
json1(pp, jj);
json1(mainUser, jj);
// 상세 티어 정보 가져오기
jj = json_reg("aaa.json");
jj = jj.substring(0, jj.length()-1);
jj = jj.substring(1);
json2(mainUser, jj);
jj = json_reg("bbb.json");
//json2(pp, jj);
/*
try {
JSONObject jsonObject = new JSONObject(jj);
......@@ -260,7 +288,8 @@ public class MainActivity extends AppCompatActivity {
e.printStackTrace();
}
*/
Toast.makeText(MainActivity.this, pp.getName(), Toast.LENGTH_SHORT).show();
//Toast.makeText(MainActivity.this, pp.name, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, mainUser.name+mainUser.tier + mainUser.rank + mainUser.leaguePoints, Toast.LENGTH_SHORT).show();
}
......@@ -345,9 +374,20 @@ public class MainActivity extends AppCompatActivity {
logo.setVisibility(View.GONE);
summoner.setVisibility(View.GONE);
//출력시 유저 정보
summoner_info.setVisibility(View.VISIBLE);
summoner_tier.setVisibility(View.VISIBLE);
//정부 수정
summoner_name.setText(mainUser.getName());
summoner_tier_tier.setText(mainUser.getTier_kr());
summoner_tier_rank.setText(mainUser.getRank());
summoner_tier_point.setText(mainUser.getLeaguePoints_str());
play_layout.setVisibility(View.VISIBLE);
mode_mymatch(0);
......@@ -596,30 +636,99 @@ public class MainActivity extends AppCompatActivity {
JSONObject jsonObject = new JSONObject(jj);
//JSONArray imp = jsonObject.getJSONArray("name");
pp.setEncryptId(jsonObject.getString("id"));
pp.setAccountId(jsonObject.getString("id"));
pp.setName(jsonObject.getString("name"));
pp.setAccountId(jsonObject.getString("accountId"));
pp.setEncryptId(jsonObject.getString("id"));
} catch (JSONException e) {
e.printStackTrace();
}
}
//2단계는 티어, 랭크, 포인트를 받아온다.
public void json2(Player_info pp, String jj){
try {
JSONObject jsonObject = new JSONObject(jj);
//파서 생성
//JSONArray imp = jsonObject.getJSONArray("name");
pp.setEncryptId(jsonObject.getString("tier"));
pp.setAccountId(jsonObject.getString("rank"));
pp.setName(jsonObject.getString("name"));
JSONObject jsonObject = new JSONObject(jj);
/*
JSONArray imps = jsonObject.getJSONArray("");
JSONObject jsonObject2 = imps.getJSONObject(0);
pp.setTier(jsonObject2.getString("tier"));
pp.setRank(jsonObject2.getString("rank"));
pp.setLeaguePoints(jsonObject2.getInt("leaguePoints"));
*/
pp.setTier(jsonObject.getString("tier"));
pp.setRank(jsonObject.getString("rank"));
pp.setLeaguePoints(jsonObject.getInt("leaguePoints"));
} catch (JSONException e) {
e.printStackTrace();
}
}
// 이건 유저 중심으로 모든 챔프를 계산하고 솔랭, 일반 구별 없이 10개를 가져온다.
// 그 후 중단된 게임은(다시하기) 제외한다. 그렇게 10개만 출력한다.
public void json3(Player_info pp, String jj){
try {
//파서 생성
JSONObject jsonObject = new JSONObject(jj);
JSONArray imps = jsonObject.getJSONArray("mathces");
//JSONObject jsonObject2 = imps.getJSONObject(0);
//이번 시즌(13)만 반영한다ㅣ그렇기 때문에 10개를 반영하지 못할 수도 있다.
//다시하기는 lane이 뜨지 않아서 문제가 되지 않는다!
//line과 roll이 확정된 것만 측정한다.
int count_num = 0;
int imp_count = 0; // 임시 연산 목적
String nn1, nn3;
int nn2;
boolean pass = true;
while(pass)
{
JSONObject jsonObject_sub = imps.getJSONObject(imp_count);
nn2 = jsonObject_sub.getInt("queue");
nn3 = jsonObject_sub.getString("lane");
nn1 = jsonObject_sub.getString("role");
//특정 경우에 대한 연산
if (nn3 == "BOTTOM"){
if (nn1 == "DUO_CARRY"){
nn3 = "BOTTOM";
}
else{
nn3 = "SUPPORTER";
}
}
if ((nn2 == 420) || (nn2==430)){
if(nn3 != "NONE"){
pp.setGameMode(nn2,count_num);
pp.setLane(nn3,count_num);
pp.setChampion(jsonObject_sub.getInt("champion"),count_num);
pp.setGameId(jsonObject_sub.getLong("gameId"),count_num);
count_num ++;
if(count_num == 10){
pass = false;
}
}
}
imp_count ++;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
......
......@@ -2,14 +2,24 @@ package com.example.pro_lol_log;
public class Match_info {
//일단 전투 정보 받아오고
//gameDuration / tier 보정 값 계산 /
//이게 매치 정보이다.
int gameId;
int gameDuration;
int myid; //게임 마다 정해지는 id 1~9 유저를 정한다.
int queue; // 게임의 종류이다. 이는 기본 match 정보에도 있다!! 420 솔랭 / 430 일반
// 일반 유저는 일겜도 받아온다. 평가자들은 솔랭도 받아와야 한다.
//기본적으로 받아오는 시간
int gameDuration; // 이게 300 이하이면 중단 된 게임, 그냥 제외시켜 버려라!!
int timePenalty1; //시간 값 받아올 때 산출한다.
int timePenalty2; // 후반 지표를 위해 큰 배수 적용
int lane = 0 ;
// 1탑 2정글 3미드 4봇 5서폿
int lane = 0 ; // 0탑 1정글 2미드 3봇 4서폿
//String role = " "; // 서폿 구분 전용이다. DUO_SUPPORT 이면 서포터로 분류
int tierH = 50;
int tierL = 40;
// 챌150 그마140 마130 다120 플110 골100 실90 브80 아70 (임의)
......@@ -69,7 +79,7 @@ public class Match_info {
*/
//전투기여도-------------------------
int totalTimeCrowdContrlDealt; // 군중제어 횟수
int totalDamageDealt; // 준 데미지 long totalDamageDealtToChampions 를 받아야 한다.
int totalDamageDealt; // 준 데미지 ** long totalDamageDealtToChampions 를 받아야 한다. **
int damageSelfMitigated;// 데미지 경감량 long
int totalDamageTaken; // 받은 데미지 long
/*
......@@ -79,6 +89,85 @@ public class Match_info {
int [] totalDamageTaken = new int[10]; // 받은 데미지 long
*/
// 챌30 그마28 마26 다24 플22 골20 실18 브16 아14 언랭14(실제 높은 값)
// 챌30 그마29 마28 다27 플26 골25 실24 브23 아22 언랭22(실제 낮은 값)
// 9 ~ 0
public void setTierH(int tt){
switch(tt){
case 0:
tierH = 14;
break;
case 1:
tierH = 14;
break;
case 2:
tierH = 16;
break;
case 3:
tierH = 18;
break;
case 4:
tierH = 20;
break;
case 5:
tierH = 22;
break;
case 6:
tierH = 24;
break;
case 7:
tierH = 26;
break;
case 8:
tierH = 28;
break;
case 9:
tierH = 30;
break;
default:
tierH = 14;
}
}
public void setTierL(int tt){
switch(tt){
case 0:
tierH = 22;
break;
case 1:
tierH = 22;
break;
case 2:
tierH = 23;
break;
case 3:
tierH = 24;
break;
case 4:
tierH = 25;
break;
case 5:
tierH = 26;
break;
case 6:
tierH = 27;
break;
case 7:
tierH = 28;
break;
case 8:
tierH = 29;
break;
case 9:
tierH = 30;
break;
default:
tierH = 22;
}
}
public int Penalty1(int time){
//int val;
......@@ -132,10 +221,20 @@ public class Match_info {
//점수는 티어 상대값과 절대값으로 제공
//type 0 절대값 type 1 티어 상대값
//절대값을 100을 곱한다.
public int sightscore(int type){
public int sightscore(int type, int line){
int imp = 0;
imp = visionScore + wardsPlaced + wardsKilled + visionWardsBoughtInGame * 2;
if(line == 1){
imp = visionScore + wardsPlaced+2 + wardsKilled*4 + visionWardsBoughtInGame * 4;
}
else if(line == 4){
imp = visionScore + wardsPlaced*3 + wardsKilled*3 + visionWardsBoughtInGame * 3;
}
else{
imp = visionScore + wardsPlaced + wardsKilled + visionWardsBoughtInGame * 2;
}
imp = imp*10;
if (type == 1) {
imp = imp * tierL;
......@@ -187,8 +286,8 @@ public class Match_info {
int quadraKills;
int pentakills;
*/
//라인 별로 달라진다. 1탑 ~ 5서폿
if (line == 1)
//라인 별로 달라진다. 0탑 ~ 4서폿
if (line == 0)
{
imp = kills*320 - deaths*150 + assists*100;
imp = imp + 50*doubleKills + 100*tripleKills + 200*quadraKills+500*pentakills;
......@@ -197,7 +296,7 @@ public class Match_info {
imp = imp+150;
}
}
else if(line == 2)
else if(line == 1)
{
imp = kills*270 - deaths*170 + assists*130;
imp = imp + 70*doubleKills + 150*tripleKills + 250*quadraKills+600*pentakills;
......@@ -206,7 +305,7 @@ public class Match_info {
imp = imp+150;
}
}
else if(line == 3)
else if(line == 2)
{
imp = kills*300 - deaths*200 + assists*100;
imp = imp + 50*doubleKills + 100*tripleKills + 200*quadraKills+500*pentakills;
......@@ -215,7 +314,7 @@ public class Match_info {
imp = imp+200;
}
}
else if(line == 4)
else if(line == 3)
{
imp = kills*400 - deaths*300 + assists*60;
imp = imp + 50*doubleKills + 100*tripleKills + 200*quadraKills+500*pentakills;
......@@ -224,7 +323,7 @@ public class Match_info {
imp = imp+200;
}
}
else if(line == 5)
else if(line == 4)
{
imp = kills*200 - deaths*100 + assists*150;
imp = imp + 50*doubleKills + 250*tripleKills + 500*quadraKills+1000*pentakills;
......@@ -261,21 +360,21 @@ public class Match_info {
int damageSelfMitigated;// 데미지 경감량 long
int totalDamageTaken; // 받은 데미지 long
*/
if (line == 1)
if (line == 0)
{
imp = totalDamageDealt*5 + totalDamageTaken*3 + damageSelfMitigated*1;
imp = totalDamageDealt*8 + totalDamageTaken*3 + damageSelfMitigated*3 + totalTimeCrowdContrlDealt*300;
}
else if(line == 1){
imp = totalDamageDealt*7 + totalDamageTaken*2 + damageSelfMitigated*3+ totalTimeCrowdContrlDealt*500;
}
else if(line == 2){
imp = totalDamageDealt*4 + totalDamageTaken*3 + damageSelfMitigated*1;
imp = totalDamageDealt*8 + totalDamageTaken*2 + damageSelfMitigated*2+ totalTimeCrowdContrlDealt*400;
}
else if(line == 3){
imp = totalDamageDealt*5 + totalDamageTaken*3 + damageSelfMitigated*1;
imp = totalDamageDealt*10 + totalDamageTaken*2 + damageSelfMitigated*2+ totalTimeCrowdContrlDealt*200;
}
else if(line == 4){
imp = totalDamageDealt*7 + totalDamageTaken*2 + damageSelfMitigated*1;
}
else if(line == 5){
imp = totalDamageDealt*4 + totalDamageTaken*4 + damageSelfMitigated*2;
imp = totalDamageDealt*6 + totalDamageTaken*3 + damageSelfMitigated*4+ totalTimeCrowdContrlDealt*600;
}
else{
imp = 0;
......@@ -296,6 +395,49 @@ public class Match_info {
}
public void setName(int nn){
gameDuration = nn;
}
public void setLane(String nn){
if (nn == "TOP"){lane = 0;}
else if (nn == "JUNGLE"){lane = 1;}
else if (nn == "MIDDLE"){lane = 2;}
else if (nn == "BOTTOM"){lane = 3;}
else {lane = 99;}
}
public void setRole(String nn){
if (nn == "DUO_SUPPORT" && lane == 3){
lane = 4; // 서폿으로 변경해준다.
}
else{
lane = 99;
}
}
public void setVisionScore(int nn){ visionScore = nn;}
public void setWardsPlaced(int nn){ wardsPlaced = nn;}
public void setWardsKilled(int nn){ wardsKilled = nn;}
public void setVisionWardsBoughtInGame(int nn){visionWardsBoughtInGame = nn;}
public void setChampLevel(int nn){champLevel = nn;}
public void setGoldEarned(int nn){goldEarned = nn;}
public void setTotalMinionKilled(int nn){totalMinionKilled = nn;}
public void setKills(int nn){kills = nn;}
public void setDeaths(int nn){deaths = nn;}
public void setAssists(int nn){assists = nn;}
public void setFirstBloodAssist(boolean nn){firstBloodAssist = nn;}
public void setFirstBloodkill(boolean nn){firstBloodkill = nn;}
public void setLargestMultiKill(int nn){largestMultiKill = nn;}
public void setDoubleKills(int nn){doubleKills = nn;}
public void setTripleKills(int nn){tripleKills = nn;}
public void setQuadraKills(int nn){quadraKills = nn;}
public void setPentakills(int nn){pentakills = nn;}
public void setTotalTimeCrowdContrlDealt(int nn){totalTimeCrowdContrlDealt =nn;}
public void setTotalDamageDealt(int nn){totalDamageDealt = nn;}
public void setDamageSelfMitigated(int nn){damageSelfMitigated = nn;}
public void setTotalDamageTaken(int nn){totalDamageTaken = nn;}
}
......
......@@ -9,9 +9,53 @@ public class Player_info {
String accountId;
String encryptId;
//랭킹 관련 아래 3개의 정보들..
String tier;
int tier_num;
String rank;
int leaguePoints;
//int credibility;
//사용자는 자신의 전적 기록을 가진다.
//이걸 json으로 받아와서 표기한다.
//-----------------------------------------------------------------
//각 각 일반 1. 유저 10개만 표기하면 됨. 챔피언들이 다 섞여있다.
// 2. 특정 챔프만 받아와서 연산한다.
int able_user = 0; //일반 유저 연산용, 10개만 연산
int win_lose = 0; //-1이면 패배, 1이면 승리 0이면 아직 연산 안함
int [] Lane = new int[10]; //5개의 래인 중 하나의 값
long [] gameId = new long[10] ; //검색의 기준으로 쓰일 게임 번호
int [] champion = new int[10] ; //챔피언 번호
// 여기까지는 원래 값으로도 얻을 수 있다.
int [][] points = new int[10][4]; //4개의 근본 점수
int [][] points_add = new int[10][3]; //분당 CS / 분당 골드 / 평균 킬관여
int [] duration = new int[10]; //게임 플레이 시간 초로 계산된다.
int [][] KDA = new int[10][3]; //KDA값
int [] gameMode = new int[10]; //기본 유저는 일반도 계산해주기에.. 1은 솔랭 / 2는 일반이다. 솔랭은 값 보정, 일반은 보정 없이 계산한다.
//-----------------------------------------------------------------
// 아래는 프로 전용, 프로는 무조건 랭크(420)만 계산한다.
int able_pro = 0; //프로 연산용, 100개 연산
int champ_p = 0; //어차피 한 챔프만 대상으로 뽑아올 것이기에 배열이 필요 없다.
int Lane_P = -1; //어차피 한 라인을 기준으로 뽑아올 것이기에 배열이 필요 없다.
int game_count = 0; //받아오는 값이 생각보다 적을 수 있다.
long [] gameId_P = new long[100]; //검색 기준으로 쓰일 게임 번호
int [][] points_P = new int[100][8]; //4개의 티어 보정 근본 점수와 무보정 점수 / tier_num 으로 정해지지
int [][] point_add_p = new int[100][3]; //부가적인 3개의 값 이 3개는 * 분당 CS / 분당 골드 / 평균 킬관여
//아래는 연산용으로 쓰일 인수
int imp_lane = -1; //혹시라도 매개 변수로 쓸 값.
//챔프와 라인에 맞는 유효한 값 연산을 위해 임시로 사용하는 배열
//testcount 만큼의 번호값을 가져 point[ tester[번호] ][ 0~6 ] 로 기져올 수 있다.
int testchamp = 0; //1부터 '애니'로 시작한다.
int testcount = 0;
int [] tester = new int[200];
//int [] examed = new int[100]; //채점 정보
//이렇게 얻은 값으로 자신의 전적을 확인한다.
//두 번째로는
public String getName(){
......@@ -20,42 +64,150 @@ public class Player_info {
public void setName(String nn){
name = nn;
}
public String getAccountId(){
return accountId;
}
public void setAccountId(String nn){
accountId = nn;
}
public String getEncryptId(){
return encryptId;
}
public void setEncryptId(String nn){
encryptId = nn;
}
public String getTier(){
return tier;
}
public String getTier_kr(){
String imp = " ";
switch (tier){
case "CHALLENGER" :
imp = "챌린져";
tier_num = 9;
break;
case "GRANDMASTER" :
imp = "그랜드마스터";
tier_num = 8;
break;
case "MASTER" :
imp = "마스터";
tier_num = 7;
break;
case "DIAMOND" :
imp = "다이아몬드";
tier_num = 6;
break;
case "PLATINUM" :
imp = "플래티넘";
tier_num = 5;
break;
case "GOLD" :
imp = "골드";
tier_num = 4;
break;
case "SILVER" :
imp = "실버";
tier_num = 3;
break;
case "BRONZE" :
imp = "브론즈";
tier_num = 2;
break;
case "IRON" :
imp = "아이언";
tier_num = 1;
break;
default:
imp = "언랭";
tier_num = 0;
break;
}
return imp;
}
public void setTier(String nn){
encryptId = nn;
tier = nn;
}
public String getRank(){
return rank;
if (tier_num > 7){
return " ";
}
else{
return rank;
}
}
public void setRank(String ss){
rank = ss;
}
public int getLeaguePoints(){
return leaguePoints;
}
public String getLeaguePoints_str(){ String imp = String.valueOf(leaguePoints); return (imp+"점");}
public void setLeaguePoints(int ii){
leaguePoints = ii;
}
//test 값들에 game id를 받아오는 역할을 한다. 크기도 받는다.
/*
public void specific_champData(int champsT,int laneT){
testcount = 0;
for(int i = 0; i<200; i++){
if (Lane[i] == laneT && champion[i] == champsT){
tester[testcount] = i;
}
}
}
*/
public int getLane(int addit){
return Lane[addit];
}
public void setLane(String nn, int ad){
if (nn == "TOP"){Lane[ad] = 0;}
else if (nn == "JUNGLE"){Lane[ad] = 1;}
else if (nn == "MIDDLE"){Lane[ad] = 2;}
else if (nn == "BOTTOM"){Lane[ad] = 3;}
else if (nn == "SUPPORTER"){Lane[ad] = 4;}
else {Lane[ad] = 99;}
}
public int getChampion(int addit){
return champion[addit];
}
public void setChampion(int nn, int ad){
champion[ad] = nn;
}
//String get_all(){
//return name+" / "+summonerLevel+" / "+accountId;
public long getGameId(int addit)
{
return gameId[addit];
}
public void setGameId(long lines, int addit)
{
gameId[addit] = lines;
}
public int getGameMode(int addit)
{
return gameMode[addit];
}
public void setGameMode(int nn,int addit) {
if (nn == 420) {
gameMode[addit] = 1;
}
else if(nn == 430){
gameMode[addit] = 2;
}
else{
gameMode[addit] = 0;
}
}
}
/*
......
......@@ -42,28 +42,29 @@
<LinearLayout
android:id="@+id/summoner_info"
android:layout_width="match_parent"
android:layout_height="84dp"
android:layout_marginTop="20dp"
android:layout_height="120dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal"
android:visibility="gone">
android:visibility="visible">
<ImageView
android:id="@+id/tiers"
android:layout_marginLeft="50dp"
android:layout_marginRight="20dp"
android:layout_width="70dp"
android:layout_height="84dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="10dp"
android:layout_width="120dp"
android:layout_height="120dp"
android:src="@drawable/gold"
android:visibility="visible"
/>
<TextView
android:id="@+id/summoner_name"
android:layout_width="wrap_content"
android:layout_height="84dp"
android:layout_width="235dp"
android:layout_height="120dp"
android:gravity="center|left"
android:text="롤첨혜요"
android:textSize="50dp"
android:visibility="visible"
/>
android:textSize="40dp"
android:visibility="visible" />
</LinearLayout>
......@@ -73,12 +74,12 @@
android:layout_height="wrap_content"
android:layout_marginBottom="50dp"
android:orientation="horizontal"
android:visibility="gone">
android:visibility="visible">
<TextView
android:id="@+id/summoner_tier_tier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_marginLeft="30dp"
android:text="골드"
android:textSize="40dp"
android:visibility="visible"/>
......
package com.example.paradyss_v1;
public class BlockMaker {
}