From b9126ef3abeb1c249f0baef858f69498c73db7e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=9F=B3=E7=9A=AE=E5=B9=BC=E9=B8=9F?= <2960474346@qq.com>
Date: Thu, 13 Jun 2024 19:58:37 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E4=BA=BA=E5=AF=B9=E6=88=98ws=E6=A1=86?=
=?UTF-8?q?=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 6 +++
.../config/WebSocketConfig.java | 21 ++++++++++
.../catchTheLetters/entity/GameRoom.java | 38 +++++++++++++++++++
.../example/catchTheLetters/enums/Status.java | 5 +++
.../handler/WebSocketHandler.java | 15 ++++++++
.../catchTheLetters/model/vo/Letter.java | 15 ++++++++
.../catchTheLetters/service/RoomService.java | 18 +++++++++
7 files changed, 118 insertions(+)
create mode 100644 src/main/java/com/example/catchTheLetters/config/WebSocketConfig.java
create mode 100644 src/main/java/com/example/catchTheLetters/entity/GameRoom.java
create mode 100644 src/main/java/com/example/catchTheLetters/enums/Status.java
create mode 100644 src/main/java/com/example/catchTheLetters/handler/WebSocketHandler.java
create mode 100644 src/main/java/com/example/catchTheLetters/model/vo/Letter.java
create mode 100644 src/main/java/com/example/catchTheLetters/service/RoomService.java
diff --git a/pom.xml b/pom.xml
index fe0f531..13b8e5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,6 +47,12 @@
spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
org.springframework.boot
diff --git a/src/main/java/com/example/catchTheLetters/config/WebSocketConfig.java b/src/main/java/com/example/catchTheLetters/config/WebSocketConfig.java
new file mode 100644
index 0000000..fc898ae
--- /dev/null
+++ b/src/main/java/com/example/catchTheLetters/config/WebSocketConfig.java
@@ -0,0 +1,21 @@
+package com.example.catchTheLetters.config;
+
+import com.example.catchTheLetters.handler.WebSocketHandler;
+import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.config.annotation.EnableWebSocket;
+import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
+import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
+
+@Configuration
+@EnableWebSocket
+public class WebSocketConfig implements WebSocketConfigurer {
+
+ @Resource
+ private WebSocketHandler webSocketHandler;
+
+ @Override
+ public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
+ registry.addHandler(webSocketHandler, "/ws");
+ }
+}
diff --git a/src/main/java/com/example/catchTheLetters/entity/GameRoom.java b/src/main/java/com/example/catchTheLetters/entity/GameRoom.java
new file mode 100644
index 0000000..57bd85c
--- /dev/null
+++ b/src/main/java/com/example/catchTheLetters/entity/GameRoom.java
@@ -0,0 +1,38 @@
+package com.example.catchTheLetters.entity;
+
+import com.example.catchTheLetters.enums.Status;
+import com.example.catchTheLetters.model.vo.Letter;
+import org.springframework.web.socket.WebSocketSession;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GameRoom {
+ private List players = new ArrayList<>();
+ private Status status = Status.WAITING;
+
+ public void addPlayer(WebSocketSession session) {
+ players.add(session);
+ }
+
+ public void removePlayer(WebSocketSession session) {
+ players.remove(session);
+ }
+
+ public void startGame() {
+ status = Status.PLAYING;
+ }
+
+ public void endGame() {
+ status = Status.END;
+ }
+
+ public void handleInput(WebSocketSession session, String input) {
+ // 处理玩家输入
+ }
+
+ public Letter generateLetter() {
+ // 生成字母
+ return null;
+ }
+}
diff --git a/src/main/java/com/example/catchTheLetters/enums/Status.java b/src/main/java/com/example/catchTheLetters/enums/Status.java
new file mode 100644
index 0000000..58dccdc
--- /dev/null
+++ b/src/main/java/com/example/catchTheLetters/enums/Status.java
@@ -0,0 +1,5 @@
+package com.example.catchTheLetters.enums;
+
+public enum Status {
+ WAITING, PLAYING, END
+}
diff --git a/src/main/java/com/example/catchTheLetters/handler/WebSocketHandler.java b/src/main/java/com/example/catchTheLetters/handler/WebSocketHandler.java
new file mode 100644
index 0000000..e1302d7
--- /dev/null
+++ b/src/main/java/com/example/catchTheLetters/handler/WebSocketHandler.java
@@ -0,0 +1,15 @@
+package com.example.catchTheLetters.handler;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.TextWebSocketHandler;
+
+@Controller
+public class WebSocketHandler extends TextWebSocketHandler {
+
+ @Override
+ public void handleTextMessage(WebSocketSession session, TextMessage message) {
+ // 处理接收到的消息
+ }
+}
diff --git a/src/main/java/com/example/catchTheLetters/model/vo/Letter.java b/src/main/java/com/example/catchTheLetters/model/vo/Letter.java
new file mode 100644
index 0000000..d44f59c
--- /dev/null
+++ b/src/main/java/com/example/catchTheLetters/model/vo/Letter.java
@@ -0,0 +1,15 @@
+package com.example.catchTheLetters.model.vo;
+
+public class Letter {
+ // 字母值,如果是10则是加血
+ private String letterVal;
+
+ // 下落速度
+ private float speed = 3f;
+
+ // 字母的x坐标
+ private float x;
+
+ // 字母的y坐标
+ private float y;
+}
diff --git a/src/main/java/com/example/catchTheLetters/service/RoomService.java b/src/main/java/com/example/catchTheLetters/service/RoomService.java
new file mode 100644
index 0000000..d494de4
--- /dev/null
+++ b/src/main/java/com/example/catchTheLetters/service/RoomService.java
@@ -0,0 +1,18 @@
+package com.example.catchTheLetters.service;
+
+import com.example.catchTheLetters.model.vo.Letter;
+import org.springframework.web.socket.WebSocketSession;
+
+public interface RoomService {
+ void addPlayer(WebSocketSession session);
+
+ void removePlayer(WebSocketSession session);
+
+ void startGame();
+
+ void endGame();
+
+ void handleInput(WebSocketSession session, String input);
+
+ Letter generateLetter();
+}