xy 3 周之前
父節點
當前提交
01096080b9
共有 2 個文件被更改,包括 34 次插入38 次删除
  1. 7 0
      src/GameClient.php
  2. 27 38
      src/main.php

+ 7 - 0
src/GameClient.php

@@ -23,6 +23,13 @@ class GameClient {
         // $this->login();
     }
 
+    public function close() {
+        echo "命令调用了 close \n";
+    }
+    public function outGame(){
+        echo "命令调用了 outGame \n";
+    }
+
     public function login(string $account , string $password) {
         $loginReq = new ReqLogin();
         $loginReq->setAccount($account);

+ 27 - 38
src/main.php

@@ -1,57 +1,46 @@
 <?php
 require_once __DIR__ . '/../vendor/autoload.php';
 use App\GameClient;
+
 class ProgramMain {
     private static ?GameClient $client = null;
     
     private static function getClient(): GameClient {
         if (self::$client === null) {
             self::$client = new GameClient();
-            echo "客户端初始化完成\n";
         }
         return self::$client;
     }
 
-    public static function handleCommand(array $args): void {
+    public static function runInteractiveCli(): void {
         $client = self::getClient();
         
-        if (count($args) < 2) {
-            echo "使用方法: php client.php [命令] [参数...]\n";
-            echo "可用命令:\n";
-            echo "  login [账号] [密码] - 登录游戏\n";
-            echo "  start - 启动客户端\n";
-            return;
-        }
-
-        $command = $args[1];
-        switch ($command) {
-            case 'login':
-                if (count($args) < 4) {
-                    echo "错误:login命令需要账号和密码参数\n";
-                    echo "示例: php client.php login myaccount mypassword\n";
-                    return;
-                }
-                $account = $args[2];
-                $password = $args[3];
-                $client->login($account, $password);
-                break;
-            case 'start':
-                $client->start();
-                break;
-            case 'outGame':
-                echo "outGame";
-                break;
-            default:
-                echo "未知命令: $command\n";
+        echo "游戏客户端交互模式(输入命令执行,如 login, outGame, exit)\n";
+        
+        while (true) {
+            $input = readline("> ");  // 等待用户输入
+            $args = explode(' ', $input);  // 拆解命令和参数
+            
+            switch ($args[0]) {
+                case 'login':
+                    if (count($args) < 3) {
+                        echo "用法: login [账号] [密码]\n";
+                        break;
+                    }
+                    $client->login($args[1], $args[2]);
+                    break;
+                case 'outGame':
+                    $client->outGame();
+                    break;
+                case 'exit':
+                    $client->close();  // 关闭 WebSocket 连接
+                    exit(0);
+                default:
+                    echo "未知命令。可用命令: login, outGame, exit\n";
+            }
         }
     }
 }
 
-// 命令行执行
-if (php_sapi_name() === 'cli') {
-    ProgramMain::handleCommand($argv);
-}
-
-
-//使用 
-// php main.php login xy1 123
+// 直接进入交互模式
+ProgramMain::runInteractiveCli();