# CoTuongPi - Cờ Tướng trên Terminal

Thư viện chơi **Cờ Tướng** (Chinese Chess / Xiangqi) trên terminal với giao diện đẹp mắt và chế độ chơi qua mạng LAN.

## Cài đặt

```bash
pip install cotuongpi
```

## Sử dụng

```bash
cotuongpi
```

Hoặc:

```bash
python -m cotuongpi
```

## Tính năng

- Chơi 2 người trên cùng máy tính
- Chơi qua mạng LAN (cùng WiFi) với hệ thống phòng
- Tuân thủ đầy đủ và nghiêm ngặt luật cờ tướng
- Giao diện terminal đẹp mắt với màu sắc (sử dụng Rich)
- Hiển thị nước đi hợp lệ khi chọn quân
- Theo dõi quân bị bắt và lịch sử nước đi
- Hoàn tác nước đi (chế độ local)
- Phát hiện chiếu, chiếu bí, hòa cờ (hết nước đi, lặp thế cờ)
- Hỗ trợ đầu hàng và xin hòa

## Chơi qua mạng LAN

Cả hai người chơi cần kết nối chung một mạng WiFi.

### Tạo phòng

1. Chọn **"Chơi qua mạng LAN"**
2. Chọn **"Tạo phòng"**
3. Chia sẻ **mã phòng 4 ký tự** cho đối thủ

### Tham gia phòng

1. Chọn **"Chơi qua mạng LAN"**
2. Chọn **"Tham gia phòng"**
3. Nhập **mã phòng** hoặc **IP:PORT** (nếu UDP broadcast bị chặn)

## Cách nhập nước đi

| Cách nhập          | Ví dụ     | Mô tả                         |
| ------------------ | --------- | ------------------------------ |
| Chọn quân          | `e9`      | Chọn quân ở cột e, hàng 9     |
| Chọn đích          | `e8`      | Di chuyển quân đã chọn tới e8 |
| Nhập trực tiếp     | `e9 e8`   | Di chuyển quân từ e9 tới e8   |
| Nhập không khoảng  | `e9e8`    | Tương tự                      |

### Tọa độ

- **Cột**: `a` đến `i` (trái sang phải)
- **Hàng**: `0` đến `9` (trên xuống dưới)

### Lệnh

| Lệnh | Phím tắt | Mô tả          |
| ---- | -------- | --------------- |
| help | `h`      | Trợ giúp        |
| undo | `u`      | Hoàn tác        |
| resign | `r`    | Đầu hàng        |
| draw | `d`      | Xin hòa         |
| quit | `q`      | Thoát           |

## Luật cờ tướng

### Quân cờ

| Đỏ | Đen | Tên    | Di chuyển                                      |
| -- | --- | ------ | ---------------------------------------------- |
| 帥 | 將  | Tướng  | 1 ô ngang/dọc, chỉ trong cung 3x3             |
| 仕 | 士  | Sĩ     | 1 ô chéo, chỉ trong cung 3x3                  |
| 相 | 象  | Tượng  | 2 ô chéo (hình chữ điền), không qua sông      |
| 馬 | 馬  | Mã     | Hình chữ L, bị cản nếu có quân chắn chân      |
| 車 | 車  | Xe     | Thẳng ngang hoặc dọc, không giới hạn           |
| 炮 | 砲  | Pháo   | Di chuyển thẳng, ăn quân phải nhảy qua 1 quân  |
| 兵 | 卒  | Tốt    | Tiến 1 ô, sau khi qua sông được đi ngang       |

### Luật đặc biệt

- **Tướng đối mặt**: Hai tướng không được đứng cùng cột mà không có quân chắn giữa
- **Tượng không qua sông**: Tượng bị giới hạn ở nửa sân nhà
- **Mã bị cản chân**: Nếu ô kề (theo hướng đi) có quân thì không đi được
- **Pháo nhảy ăn**: Pháo di chuyển thẳng như xe, nhưng khi ăn phải nhảy qua đúng 1 quân
- **Lặp thế cờ**: Nếu cùng thế cờ xuất hiện 3 lần, ván cờ hòa

## Yêu cầu

- Python >= 3.10
- Terminal hỗ trợ Unicode và màu sắc

## License

MIT
