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(); +}