python


18、scala

<pre><code> import $ivy.`org.apache.spark::spark-sql:2.4.0` // Or use any other 2.x version here import $ivy.`sh.almond::almond-spark:0.5.0` import org.apache.log4j.{Level, Logger} Logger.getLogger("org").setLevel(Level.OFF) import org.apache.spark.sql._ val spark = { NotebookSparkSession.builder() .master("local[*]") .getOrCreate() } import spark.implicits._ //# 使用可变数组 import scala.collection.mutable.ArrayBuffer class WarPosSee_stage(){ var numArrayBuffer = new ArrayBuffer[String](); var red_bops_pos = new ArrayBuffer[String](); var red_bops_see = new ArrayBuffer[String](); var blue_bops_pos = new ArrayBuffer[String](); var blue_bops_see = new ArrayBuffer[String](); // 复原 def reset(){ red_bops_pos = new ArrayBuffer[String](); red_bops_see = new ArrayBuffer[String](); blue_bops_pos = new ArrayBuffer[String](); blue_bops_see = new ArrayBuffer[String](); } // #显示位置和观察情况 def show_info(){ println("红方活着棋子位置情况:", red_bops_pos) println("红方棋子观察敌方情况:", red_bops_see) println("蓝方活着棋子位置情况:", blue_bops_pos) println("蓝方棋子观察红方情况:", blue_bops_see) println("------------------") } def count(array:Array[Row]) { for (i &lt;- 0 to array.length - 1) { if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "10") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == 0) &amp;&amp; (array(i)(4) == 11) &amp;&amp; (array(i)(0) == 0)) { red_bops_pos += "tank_" + array(i)(4) + ": " + (array(i)(6)) // red_bops_live(0) = red_bops_live(0) + 1 } else if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "20") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "0") &amp;&amp; (array(i)(4) == "21") &amp;&amp; (array(i)(0) == "0")) { //red_bops_live(1) = red_bops_live(1) + 1 red_bops_pos += "car_" + array(i)(4) + ": " + (array(i)(6)) } else if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "30") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "0") &amp;&amp; (array(i)(4) == "31") &amp;&amp; (array(i)(0) == "0")) { red_bops_pos += "soldier_" + array(i)(4) + ": " + array(i)(6) //red_bops_live(2) = red_bops_live(2) + 1 } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "10") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "11") &amp;&amp; (array(i)(0) == "0")) { blue_bops_pos += "tank_" + array(i)(4) + ": " + array(i)(6) } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "20") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "21") &amp;&amp; (array(i)(0) == "0")) { blue_bops_pos += "car_" + array(i)(4) + ": " + array(i)(6) } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "30") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "31") &amp;&amp; (array(i)(0) == "0")) { blue_bops_pos += "soldier_" + array(i)(4) + ": " + array(i)(6) } } } } //读取数据集,不知道怎么直接读取excel,所以提前把表转换成了csv格式 val df = spark.read.format("csv").option("header", "true").load("../jun_single/csv_posrecord.csv") //读到dataframe df中 //df.show//查看dataframe var stage = 3 var file_name = "2018530151256 01-05-03-03-02 推演室9" val df2 = df.filter($"Filename".equalTo(file_name)).filter($"StageID"&gt;=stage).filter($"StageID"&lt;=stage+1) df2.show var array = df2.collect class WarCount_stage(){ var red_bops_live = Array(0,0,0) var red_bops_dead = Array(0,0,0) var blue_bops_live = Array(0,0,0) var blue_bops_dead = Array(0,0,0) var red2blue = 0 def reset(){ red_bops_live = Array(0,0,0) red_bops_dead = Array(0,0,0) blue_bops_live = Array(0,0,0) blue_bops_dead = Array(0,0,0) red2blue = 0 } def show_info(){ println("红方活着棋子情况:", "坦克数量:"+ red_bops_live(0) + "战车数量:"+ red_bops_live(1) + "步兵小队数量:"+ red_bops_live(2)) println("红方死亡棋子情况:", "坦克数量:"+ red_bops_dead(0) + "战车数量:"+ red_bops_dead(1) + "步兵小队数量:"+ red_bops_dead(2)) println("蓝方活着棋子情况: ", "坦克数量:"+ blue_bops_live(0) + "战车数量:"+ blue_bops_live(1) + "步兵小队数量:"+ blue_bops_live(2)) println("蓝方死亡棋子情况: ", "坦克数量:"+ blue_bops_dead(0) + "战车数量:"+ blue_bops_dead(1) + "步兵小队数量:"+ blue_bops_dead(2)) println("红蓝双方力量对比: ", red2blue ) println("------------------ ") } def count(array:Array[Row]) { for (i &lt;- 0 to array.length - 1) { if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "10") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == 0) &amp;&amp; (array(i)(4) == 11) &amp;&amp; (array(i)(0) == 0)) { red_bops_live(0) = red_bops_live(0) + 1 } else if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "20") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "0") &amp;&amp; (array(i)(4) == "21") &amp;&amp; (array(i)(0) == "0")) { red_bops_live(1) = red_bops_live(1) + 1 } else if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "30") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "0") &amp;&amp; (array(i)(4) == "31") &amp;&amp; (array(i)(0) == "0")) { red_bops_live(2) = red_bops_live(2) + 1 } else if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "10") &amp;&amp; (array(i)(0) == "1") || (array(i)(2) == "0") &amp;&amp; (array(i)(4) == "11") &amp;&amp; (array(i)(0) == "1")) { red_bops_dead(0) = red_bops_dead(0) + 1 } else if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "20") &amp;&amp; (array(i)(0) == "1") || (array(i)(2) == "0") &amp;&amp; (array(i)(4) == "21") &amp;&amp; (array(i)(0) == "1")) { red_bops_dead(1) = red_bops_dead(1) + 1 } else if ((array(i)(2) == "0") &amp;&amp; (array(i)(4) == "30") &amp;&amp; (array(i)(0) == "1") || (array(i)(2) == "0") &amp;&amp; (array(i)(4) == "31") &amp;&amp; (array(i)(0) == "1")) { red_bops_dead(2) = red_bops_dead(2) + 1 } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "10") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "11") &amp;&amp; (array(i)(0) == "0")) { blue_bops_live(0) = blue_bops_live(0) + 1 } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "20") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "21") &amp;&amp; (array(i)(0) == "0")) { blue_bops_live(1) = blue_bops_live(1) + 1 } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "30") &amp;&amp; (array(i)(0) == "0") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "31") &amp;&amp; (array(i)(0) == "0")) { blue_bops_live(2) = blue_bops_live(2) + 1 } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "10") &amp;&amp; (array(i)(0) == "1") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "11") &amp;&amp; (array(i)(0) == "1")) { blue_bops_dead(0) = blue_bops_dead(0) + 1 } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "20") &amp;&amp; (array(i)(0) == "1") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "21") &amp;&amp; (array(i)(0) == "1")) { blue_bops_dead(1) = blue_bops_dead(1) + 1 } else if ((array(i)(2) == "1") &amp;&amp; (array(i)(4) == "30") &amp;&amp; (array(i)(0) == "1") || (array(i)(2) == "1") &amp;&amp; (array(i)(4) == "31") &amp;&amp; (array(i)(0) == "1")) { blue_bops_dead(2) = blue_bops_dead(2) + 1 } } //计算力量大小,坦克分值为10,战车分值为8,士兵分值为5,求总的分值 var red_power:Int = red_bops_live(0) * 10 + red_bops_live(1)*8 + red_bops_live(2)*5 var blue_power:Int = blue_bops_live(0) * 10 + blue_bops_live(1)*8 + blue_bops_live(2)*5 // println(red_power) // println(blue_power) println( "红:蓝 = " + red_power + " : " + blue_power) //如果有一方棋子全部阵亡时 if (blue_power == 0){ print("蓝方全部棋子阵亡") red2blue = 100 }else if(red_power == 0){ print("红方全部棋子阵亡") red2blue = -100 }else{ print("eee") red2blue = red_power/blue_power } } } var stage = 5 var file_name = "2018530151256 01-05-03-03-02 推演室9" val df2 = df.filter($"Filename".equalTo(file_name)).filter($"StageID"&gt;=stage).filter($"StageID"&lt;=stage+1) df2.show var array = df2.collect var mWarPosSee_stage = new WarPosSee_stage() mWarPosSee_stage.count(array) mWarPosSee_stage.show_info() var mWarCount_stage = new WarCount_stage() mWarCount_stage.count(array) mWarCount_stage.show_info() </code></pre>

页面列表

ITEM_HTML