Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
yugioh-ccb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
yugioh-ccb
Commits
31a640c0
Commit
31a640c0
authored
May 01, 2025
by
EN1AK
Committed by
GitHub
May 01, 2025
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add files via upload
parent
a7ddadeb
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
8 deletions
+50
-8
1/guess_card_game.py
1/guess_card_game.py
+33
-8
1/templates/start.html
1/templates/start.html
+17
-0
No files found.
1/guess_card_game.py
View file @
31a640c0
from
flask
import
Flask
,
render_template
,
request
,
redirect
,
url_for
from
flask
import
Flask
,
render_template
,
request
,
redirect
,
url_for
,
session
import
sqlite3
import
sqlite3
import
pandas
as
pd
import
pandas
as
pd
import
random
import
random
...
@@ -7,6 +7,7 @@ from flask import jsonify
...
@@ -7,6 +7,7 @@ from flask import jsonify
app
=
Flask
(
__name__
)
app
=
Flask
(
__name__
)
db
=
None
db
=
None
target_row
=
None
target_row
=
None
app
.
secret_key
=
"你自己的随机 Secret Key"
# --- 与原 CLI 版本相同的配置 ---
# --- 与原 CLI 版本相同的配置 ---
ATTR_MAP
=
{
ATTR_MAP
=
{
...
@@ -85,28 +86,52 @@ def compare_tags(guess_tags, answer_tags):
...
@@ -85,28 +86,52 @@ def compare_tags(guess_tags, answer_tags):
return
f
"{val1} ✅"
if
val1
==
val2
else
f
"{val1} ❌"
return
f
"{val1} ✅"
if
val1
==
val2
else
f
"{val1} ❌"
return
{
key
:
cmp
(
guess_tags
[
key
],
answer_tags
[
key
])
for
key
in
guess_tags
}
return
{
key
:
cmp
(
guess_tags
[
key
],
answer_tags
[
key
])
for
key
in
guess_tags
}
def
filter_db
(
mode
):
if
mode
==
'monster'
:
# 怪兽卡 & 排除通常怪兽
return
db
[(
db
[
'type'
]
&
0x1
>
0
)
&
(
db
[
'type'
]
&
0x10
==
0
)]
if
mode
==
'spell'
:
return
db
[
db
[
'type'
]
&
0x2
>
0
]
if
mode
==
'trap'
:
return
db
[
db
[
'type'
]
&
0x4
>
0
]
# all
return
db
@
app
.
route
(
"/"
,
methods
=
[
"GET"
,
"POST"
])
@
app
.
route
(
"/"
,
methods
=
[
"GET"
,
"POST"
])
def
start
():
"""游戏开始前,选择卡牌范围"""
if
request
.
method
==
"POST"
:
mode
=
request
.
form
.
get
(
"mode"
)
session
[
'mode'
]
=
mode
# 随机选一个 target_id 存入 session
pool
=
filter_db
(
mode
)
session
[
'target_id'
]
=
int
(
pool
.
sample
(
1
)
.
index
[
0
])
return
redirect
(
url_for
(
"index"
))
return
render_template
(
"start.html"
)
@
app
.
route
(
"/game"
,
methods
=
[
"GET"
,
"POST"
])
def
index
():
def
index
():
global
target_row
feedback
=
None
feedback
=
None
if
target_row
is
None
:
mode
=
session
.
get
(
'mode'
)
monster_df
=
db
[(
db
[
"type"
]
&
0x1
)
!=
0
]
if
not
mode
:
target_row
=
monster_df
.
sample
(
1
)
.
iloc
[
0
]
return
redirect
(
url_for
(
"start"
))
filtered
=
filter_db
(
mode
)
target
=
db
.
loc
[
session
[
'target_id'
]]
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
user_input
=
request
.
form
.
get
(
"guess"
,
""
)
.
strip
()
user_input
=
request
.
form
.
get
(
"guess"
,
""
)
.
strip
()
match
=
db
[
db
[
"name"
]
.
str
.
contains
(
user_input
,
case
=
False
,
na
=
False
)]
match
=
filtered
[
filtered
[
"name"
]
.
str
.
contains
(
user_input
,
case
=
False
,
na
=
False
)]
if
match
.
empty
:
if
match
.
empty
:
feedback
=
{
"error"
:
f
"未找到包含“{user_input}”的卡片。"
}
feedback
=
{
"error"
:
f
"未找到包含“{user_input}”的卡片。"
}
else
:
else
:
guess
=
match
.
iloc
[
0
]
guess
=
match
.
iloc
[
0
]
if
guess
.
name
==
target
_row
.
name
:
if
guess
.
name
==
target
.
name
:
feedback
=
{
"success"
:
f
"🎉 恭喜你猜中了!答案就是【{guess['name']}】"
}
feedback
=
{
"success"
:
f
"🎉 恭喜你猜中了!答案就是【{guess['name']}】"
}
target_row
=
None
target_row
=
None
else
:
else
:
feedback
=
{
feedback
=
{
"compare"
:
compare_tags
(
card_to_tags
(
guess
),
card_to_tags
(
target
_row
)),
"compare"
:
compare_tags
(
card_to_tags
(
guess
),
card_to_tags
(
target
)),
"guess_name"
:
guess
[
'name'
]
"guess_name"
:
guess
[
'name'
]
}
}
...
...
1/templates/start.html
0 → 100644
View file @
31a640c0
<!DOCTYPE html>
<html
lang=
"zh-CN"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
开始新游戏
</title>
</head>
<body>
<h1>
选择本次游戏的卡片范围
</h1>
<form
method=
"post"
>
<label><input
type=
"radio"
name=
"mode"
value=
"monster"
required
>
怪兽卡(排除通常怪兽)
</label><br>
<label><input
type=
"radio"
name=
"mode"
value=
"spell"
>
魔法卡
</label><br>
<label><input
type=
"radio"
name=
"mode"
value=
"trap"
>
陷阱卡
</label><br>
<label><input
type=
"radio"
name=
"mode"
value=
"all"
>
全部卡片
</label><br><br>
<button
type=
"submit"
>
开始游戏
</button>
</form>
</body>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment