parent
1b4d8d808a
commit
108ae844f0
13 changed files with 565 additions and 90 deletions
@ -0,0 +1,15 @@ |
||||
package com.kob.backend.consumer.utils; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
/** |
||||
* @author zfp |
||||
*/ |
||||
@Data |
||||
@AllArgsConstructor |
||||
@NoArgsConstructor |
||||
public class Cell { |
||||
private int x,y; |
||||
} |
@ -0,0 +1,63 @@ |
||||
package com.kob.backend.consumer.utils; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* @author zfp |
||||
*/ |
||||
@Data |
||||
@AllArgsConstructor |
||||
@NoArgsConstructor |
||||
public class Player{ |
||||
// 玩家id
|
||||
private Integer id; |
||||
// 玩家的起始坐标(x,y)
|
||||
private Integer sx; |
||||
private Integer sy; |
||||
// 所有历史指令
|
||||
private List<Integer> steps; |
||||
|
||||
private boolean check_tail_increasing(int steps) { |
||||
if (steps <= 10) { |
||||
return true; |
||||
} |
||||
if (steps % 3 == 1) { |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public List<Cell> getCells() { |
||||
List<Cell> res = new ArrayList<>(); |
||||
|
||||
int []dx = {-1,0,1,0}, dy = {0,1,0,-1}; |
||||
int x = sx, y = sy; |
||||
int step = 0; |
||||
res.add(new Cell(x,y)); |
||||
for (int d : this.steps) { |
||||
x += dx[d]; |
||||
y += dy[d]; |
||||
res.add(new Cell(x,y)); |
||||
step++; |
||||
if (!check_tail_increasing(step)) { |
||||
res.remove(0); |
||||
} |
||||
} |
||||
return res; |
||||
} |
||||
|
||||
public String getStepsString() { |
||||
StringBuilder res = new StringBuilder(); |
||||
for (int i : this.steps) { |
||||
res.append(i); |
||||
} |
||||
return res.toString(); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,33 @@ |
||||
package com.kob.backend.controller.pojo; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType; |
||||
import com.baomidou.mybatisplus.annotation.TableId; |
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* @author zfp |
||||
*/ |
||||
@Data |
||||
@AllArgsConstructor |
||||
@NoArgsConstructor |
||||
public class Record { |
||||
@TableId(type = IdType.AUTO) |
||||
private Integer id; |
||||
private Integer aId; |
||||
private Integer aSx; |
||||
private Integer aSy; |
||||
private Integer bId; |
||||
private Integer bSx; |
||||
private Integer bSy; |
||||
private String aSteps; |
||||
private String bSteps; |
||||
private String map; |
||||
private String loser; |
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai") |
||||
private Date createTime; |
||||
} |
@ -0,0 +1,13 @@ |
||||
package com.kob.backend.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import com.kob.backend.controller.pojo.Record; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
|
||||
/** |
||||
* @author zfp |
||||
*/ |
||||
@Mapper |
||||
public interface RecordMapper extends BaseMapper<Record> { |
||||
|
||||
} |
@ -0,0 +1,78 @@ |
||||
<template> |
||||
<div class="result-board"> |
||||
<div class="result-text" v-if="$store.state.pk.loser === 'all'"> |
||||
Draw |
||||
</div> |
||||
|
||||
<div class="result-text" v-else-if="$store.state.pk.loser === 'A' && $store.state.pk.a_id === parseInt($store.state.user.id)"> |
||||
You Lose(A) |
||||
</div> |
||||
|
||||
<div class="result-text" v-else-if="$store.state.pk.loser === 'B' && $store.state.pk.b_id == parseInt($store.state.user.id)"> |
||||
You Lose(B) |
||||
</div> |
||||
|
||||
<div class="result-text" v-else> |
||||
You Win |
||||
</div> |
||||
|
||||
<div class="reset-btn"> |
||||
<button @click="reset" class="btn btn-warning lg">再来一次!</button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
|
||||
import { useStore } from 'vuex'; |
||||
|
||||
export default { |
||||
setup() { |
||||
const store = useStore(); |
||||
|
||||
const reset = () => { |
||||
store.commit("updateStatus","matching"); |
||||
store.commit("updateLoser","none"); |
||||
store.commit("updateOpponent", { |
||||
username: "my opponent", |
||||
photo: |
||||
"https://cdn.acwing.com/media/article/image/2022/08/09/1_1db2488f17-anonymous.png", |
||||
}); |
||||
} |
||||
|
||||
return { |
||||
reset, |
||||
} |
||||
} |
||||
|
||||
} |
||||
</script> |
||||
|
||||
|
||||
<style scoped> |
||||
.result-board { |
||||
width: 30vw; |
||||
height: 30vh; |
||||
background-color: rgba(34, 20, 77, 0.5); |
||||
position: absolute; |
||||
top: 30vh; |
||||
left: 35vw; |
||||
} |
||||
|
||||
.result-text { |
||||
font-size: 50px; |
||||
color:yellowgreen; |
||||
font-weight: bold; |
||||
text-align: center; |
||||
font-style: italic; |
||||
padding-top: 4vh; |
||||
padding-bottom: 4vh; |
||||
} |
||||
|
||||
.reset-btn { |
||||
width: 100%; |
||||
display: flex; |
||||
justify-content: center; |
||||
|
||||
} |
||||
</style> |
Loading…
Reference in new issue