cotuongpi 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cotuongpi-1.0.0/LICENSE +21 -0
- cotuongpi-1.0.0/PKG-INFO +127 -0
- cotuongpi-1.0.0/README.md +104 -0
- cotuongpi-1.0.0/pyproject.toml +38 -0
- cotuongpi-1.0.0/setup.cfg +4 -0
- cotuongpi-1.0.0/src/cotuongpi/__init__.py +3 -0
- cotuongpi-1.0.0/src/cotuongpi/__main__.py +3 -0
- cotuongpi-1.0.0/src/cotuongpi/app.py +443 -0
- cotuongpi-1.0.0/src/cotuongpi/board.py +91 -0
- cotuongpi-1.0.0/src/cotuongpi/game.py +132 -0
- cotuongpi-1.0.0/src/cotuongpi/lang.py +253 -0
- cotuongpi-1.0.0/src/cotuongpi/network.py +225 -0
- cotuongpi-1.0.0/src/cotuongpi/pieces.py +61 -0
- cotuongpi-1.0.0/src/cotuongpi/rules.py +215 -0
- cotuongpi-1.0.0/src/cotuongpi/ui.py +301 -0
- cotuongpi-1.0.0/src/cotuongpi.egg-info/PKG-INFO +127 -0
- cotuongpi-1.0.0/src/cotuongpi.egg-info/SOURCES.txt +19 -0
- cotuongpi-1.0.0/src/cotuongpi.egg-info/dependency_links.txt +1 -0
- cotuongpi-1.0.0/src/cotuongpi.egg-info/entry_points.txt +2 -0
- cotuongpi-1.0.0/src/cotuongpi.egg-info/requires.txt +1 -0
- cotuongpi-1.0.0/src/cotuongpi.egg-info/top_level.txt +1 -0
cotuongpi-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CoTuongPi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
cotuongpi-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cotuongpi
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Cờ Tướng (Chinese Chess) trên terminal - chơi qua mạng LAN
|
|
5
|
+
Author: CoTuongPi
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/cotuongpi/cotuongpi
|
|
8
|
+
Keywords: chinese-chess,xiangqi,co-tuong,terminal,lan,game
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Topic :: Games/Entertainment :: Board Games
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: rich>=13.0
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# CoTuongPi - Cờ Tướng trên Terminal
|
|
25
|
+
|
|
26
|
+
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.
|
|
27
|
+
|
|
28
|
+
## Cài đặt
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install cotuongpi
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Sử dụng
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
cotuongpi
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Hoặc:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
python -m cotuongpi
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Tính năng
|
|
47
|
+
|
|
48
|
+
- Chơi 2 người trên cùng máy tính
|
|
49
|
+
- Chơi qua mạng LAN (cùng WiFi) với hệ thống phòng
|
|
50
|
+
- Tuân thủ đầy đủ và nghiêm ngặt luật cờ tướng
|
|
51
|
+
- Giao diện terminal đẹp mắt với màu sắc (sử dụng Rich)
|
|
52
|
+
- Hiển thị nước đi hợp lệ khi chọn quân
|
|
53
|
+
- Theo dõi quân bị bắt và lịch sử nước đi
|
|
54
|
+
- Hoàn tác nước đi (chế độ local)
|
|
55
|
+
- Phát hiện chiếu, chiếu bí, hòa cờ (hết nước đi, lặp thế cờ)
|
|
56
|
+
- Hỗ trợ đầu hàng và xin hòa
|
|
57
|
+
|
|
58
|
+
## Chơi qua mạng LAN
|
|
59
|
+
|
|
60
|
+
Cả hai người chơi cần kết nối chung một mạng WiFi.
|
|
61
|
+
|
|
62
|
+
### Tạo phòng
|
|
63
|
+
|
|
64
|
+
1. Chọn **"Chơi qua mạng LAN"**
|
|
65
|
+
2. Chọn **"Tạo phòng"**
|
|
66
|
+
3. Chia sẻ **mã phòng 4 ký tự** cho đối thủ
|
|
67
|
+
|
|
68
|
+
### Tham gia phòng
|
|
69
|
+
|
|
70
|
+
1. Chọn **"Chơi qua mạng LAN"**
|
|
71
|
+
2. Chọn **"Tham gia phòng"**
|
|
72
|
+
3. Nhập **mã phòng** hoặc **IP:PORT** (nếu UDP broadcast bị chặn)
|
|
73
|
+
|
|
74
|
+
## Cách nhập nước đi
|
|
75
|
+
|
|
76
|
+
| Cách nhập | Ví dụ | Mô tả |
|
|
77
|
+
| ------------------ | --------- | ------------------------------ |
|
|
78
|
+
| Chọn quân | `e9` | Chọn quân ở cột e, hàng 9 |
|
|
79
|
+
| Chọn đích | `e8` | Di chuyển quân đã chọn tới e8 |
|
|
80
|
+
| Nhập trực tiếp | `e9 e8` | Di chuyển quân từ e9 tới e8 |
|
|
81
|
+
| Nhập không khoảng | `e9e8` | Tương tự |
|
|
82
|
+
|
|
83
|
+
### Tọa độ
|
|
84
|
+
|
|
85
|
+
- **Cột**: `a` đến `i` (trái sang phải)
|
|
86
|
+
- **Hàng**: `0` đến `9` (trên xuống dưới)
|
|
87
|
+
|
|
88
|
+
### Lệnh
|
|
89
|
+
|
|
90
|
+
| Lệnh | Phím tắt | Mô tả |
|
|
91
|
+
| ---- | -------- | --------------- |
|
|
92
|
+
| help | `h` | Trợ giúp |
|
|
93
|
+
| undo | `u` | Hoàn tác |
|
|
94
|
+
| resign | `r` | Đầu hàng |
|
|
95
|
+
| draw | `d` | Xin hòa |
|
|
96
|
+
| quit | `q` | Thoát |
|
|
97
|
+
|
|
98
|
+
## Luật cờ tướng
|
|
99
|
+
|
|
100
|
+
### Quân cờ
|
|
101
|
+
|
|
102
|
+
| Đỏ | Đen | Tên | Di chuyển |
|
|
103
|
+
| -- | --- | ------ | ---------------------------------------------- |
|
|
104
|
+
| 帥 | 將 | Tướng | 1 ô ngang/dọc, chỉ trong cung 3x3 |
|
|
105
|
+
| 仕 | 士 | Sĩ | 1 ô chéo, chỉ trong cung 3x3 |
|
|
106
|
+
| 相 | 象 | Tượng | 2 ô chéo (hình chữ điền), không qua sông |
|
|
107
|
+
| 馬 | 馬 | Mã | Hình chữ L, bị cản nếu có quân chắn chân |
|
|
108
|
+
| 車 | 車 | Xe | Thẳng ngang hoặc dọc, không giới hạn |
|
|
109
|
+
| 炮 | 砲 | Pháo | Di chuyển thẳng, ăn quân phải nhảy qua 1 quân |
|
|
110
|
+
| 兵 | 卒 | Tốt | Tiến 1 ô, sau khi qua sông được đi ngang |
|
|
111
|
+
|
|
112
|
+
### Luật đặc biệt
|
|
113
|
+
|
|
114
|
+
- **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
|
|
115
|
+
- **Tượng không qua sông**: Tượng bị giới hạn ở nửa sân nhà
|
|
116
|
+
- **Mã bị cản chân**: Nếu ô kề (theo hướng đi) có quân thì không đi được
|
|
117
|
+
- **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
|
|
118
|
+
- **Lặp thế cờ**: Nếu cùng thế cờ xuất hiện 3 lần, ván cờ hòa
|
|
119
|
+
|
|
120
|
+
## Yêu cầu
|
|
121
|
+
|
|
122
|
+
- Python >= 3.10
|
|
123
|
+
- Terminal hỗ trợ Unicode và màu sắc
|
|
124
|
+
|
|
125
|
+
## License
|
|
126
|
+
|
|
127
|
+
MIT
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# CoTuongPi - Cờ Tướng trên Terminal
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
## Cài đặt
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install cotuongpi
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Sử dụng
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
cotuongpi
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Hoặc:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
python -m cotuongpi
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Tính năng
|
|
24
|
+
|
|
25
|
+
- Chơi 2 người trên cùng máy tính
|
|
26
|
+
- Chơi qua mạng LAN (cùng WiFi) với hệ thống phòng
|
|
27
|
+
- Tuân thủ đầy đủ và nghiêm ngặt luật cờ tướng
|
|
28
|
+
- Giao diện terminal đẹp mắt với màu sắc (sử dụng Rich)
|
|
29
|
+
- Hiển thị nước đi hợp lệ khi chọn quân
|
|
30
|
+
- Theo dõi quân bị bắt và lịch sử nước đi
|
|
31
|
+
- Hoàn tác nước đi (chế độ local)
|
|
32
|
+
- Phát hiện chiếu, chiếu bí, hòa cờ (hết nước đi, lặp thế cờ)
|
|
33
|
+
- Hỗ trợ đầu hàng và xin hòa
|
|
34
|
+
|
|
35
|
+
## Chơi qua mạng LAN
|
|
36
|
+
|
|
37
|
+
Cả hai người chơi cần kết nối chung một mạng WiFi.
|
|
38
|
+
|
|
39
|
+
### Tạo phòng
|
|
40
|
+
|
|
41
|
+
1. Chọn **"Chơi qua mạng LAN"**
|
|
42
|
+
2. Chọn **"Tạo phòng"**
|
|
43
|
+
3. Chia sẻ **mã phòng 4 ký tự** cho đối thủ
|
|
44
|
+
|
|
45
|
+
### Tham gia phòng
|
|
46
|
+
|
|
47
|
+
1. Chọn **"Chơi qua mạng LAN"**
|
|
48
|
+
2. Chọn **"Tham gia phòng"**
|
|
49
|
+
3. Nhập **mã phòng** hoặc **IP:PORT** (nếu UDP broadcast bị chặn)
|
|
50
|
+
|
|
51
|
+
## Cách nhập nước đi
|
|
52
|
+
|
|
53
|
+
| Cách nhập | Ví dụ | Mô tả |
|
|
54
|
+
| ------------------ | --------- | ------------------------------ |
|
|
55
|
+
| Chọn quân | `e9` | Chọn quân ở cột e, hàng 9 |
|
|
56
|
+
| Chọn đích | `e8` | Di chuyển quân đã chọn tới e8 |
|
|
57
|
+
| Nhập trực tiếp | `e9 e8` | Di chuyển quân từ e9 tới e8 |
|
|
58
|
+
| Nhập không khoảng | `e9e8` | Tương tự |
|
|
59
|
+
|
|
60
|
+
### Tọa độ
|
|
61
|
+
|
|
62
|
+
- **Cột**: `a` đến `i` (trái sang phải)
|
|
63
|
+
- **Hàng**: `0` đến `9` (trên xuống dưới)
|
|
64
|
+
|
|
65
|
+
### Lệnh
|
|
66
|
+
|
|
67
|
+
| Lệnh | Phím tắt | Mô tả |
|
|
68
|
+
| ---- | -------- | --------------- |
|
|
69
|
+
| help | `h` | Trợ giúp |
|
|
70
|
+
| undo | `u` | Hoàn tác |
|
|
71
|
+
| resign | `r` | Đầu hàng |
|
|
72
|
+
| draw | `d` | Xin hòa |
|
|
73
|
+
| quit | `q` | Thoát |
|
|
74
|
+
|
|
75
|
+
## Luật cờ tướng
|
|
76
|
+
|
|
77
|
+
### Quân cờ
|
|
78
|
+
|
|
79
|
+
| Đỏ | Đen | Tên | Di chuyển |
|
|
80
|
+
| -- | --- | ------ | ---------------------------------------------- |
|
|
81
|
+
| 帥 | 將 | Tướng | 1 ô ngang/dọc, chỉ trong cung 3x3 |
|
|
82
|
+
| 仕 | 士 | Sĩ | 1 ô chéo, chỉ trong cung 3x3 |
|
|
83
|
+
| 相 | 象 | Tượng | 2 ô chéo (hình chữ điền), không qua sông |
|
|
84
|
+
| 馬 | 馬 | Mã | Hình chữ L, bị cản nếu có quân chắn chân |
|
|
85
|
+
| 車 | 車 | Xe | Thẳng ngang hoặc dọc, không giới hạn |
|
|
86
|
+
| 炮 | 砲 | Pháo | Di chuyển thẳng, ăn quân phải nhảy qua 1 quân |
|
|
87
|
+
| 兵 | 卒 | Tốt | Tiến 1 ô, sau khi qua sông được đi ngang |
|
|
88
|
+
|
|
89
|
+
### Luật đặc biệt
|
|
90
|
+
|
|
91
|
+
- **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
|
|
92
|
+
- **Tượng không qua sông**: Tượng bị giới hạn ở nửa sân nhà
|
|
93
|
+
- **Mã bị cản chân**: Nếu ô kề (theo hướng đi) có quân thì không đi được
|
|
94
|
+
- **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
|
|
95
|
+
- **Lặp thế cờ**: Nếu cùng thế cờ xuất hiện 3 lần, ván cờ hòa
|
|
96
|
+
|
|
97
|
+
## Yêu cầu
|
|
98
|
+
|
|
99
|
+
- Python >= 3.10
|
|
100
|
+
- Terminal hỗ trợ Unicode và màu sắc
|
|
101
|
+
|
|
102
|
+
## License
|
|
103
|
+
|
|
104
|
+
MIT
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "cotuongpi"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Cờ Tướng (Chinese Chess) trên terminal - chơi qua mạng LAN"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "CoTuongPi"},
|
|
14
|
+
]
|
|
15
|
+
keywords = ["chinese-chess", "xiangqi", "co-tuong", "terminal", "lan", "game"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: End Users/Desktop",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Topic :: Games/Entertainment :: Board Games",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"rich>=13.0",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[project.scripts]
|
|
32
|
+
cotuongpi = "cotuongpi.app:main"
|
|
33
|
+
|
|
34
|
+
[project.urls]
|
|
35
|
+
Homepage = "https://github.com/cotuongpi/cotuongpi"
|
|
36
|
+
|
|
37
|
+
[tool.setuptools.packages.find]
|
|
38
|
+
where = ["src"]
|