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