pokemonbattle小游戏[II]第二代更新历史(更新至2020.5.4)

前言

修改这部分两天了。本着水博客常更新的原则,决定将这部分代码的更新过程记录下来。反正除了凯子也没有人看(哭了),好bolg我水!

最终目的

  • 能挑选精灵和对手进行对战
  • 能够自定义精灵招式和敌人招式,进行自定义对战
  • 加入简单UI
  • 加入属性克制系统
  • 加入每个精灵的三维图,进行伤害修订

更新日志

2020.5.5

更新内容

  • 优化了代码,

    • 修复了上次更新遗留的小问题:

      在多重级别的if-else函数里,除去第一个if外,其余同级别的if函数要使用elif,这样就能避免重复的问题

    • 比较完美的解决了输入错误的提示问题。只要将判定条件改变为字符串就能避免输入字母造成的变量未定义问题。

下一步更新

  • 加入主菜单
  • 加入吃药系统
  • 加入每个精灵的三维图和属性,进行伤害修正(加入类)

2020.5.4

更新内容

  • 修复了输入不符合要求的数值后会停止运行的bug。现在输入了不符合要求的字母/数字会自动报错并返回上一步
  • 完成了战斗部分。现在代码可以完整的运行下来。换言之,你已经可以来一局对战了
  • 优化了hp条的显示方式。现在的hp条更长,更加直观

已知的问题

  • 在己方战斗的函数处,if-else语句总有一点问题。最后无奈用几个if函数代替了else。不影响运行,但感觉很难受

下一步更新计划

  • 加入主菜单
  • 加入吃药系统
  • 加入每个精灵的三维图和属性,进行伤害修正

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
import time
import random


# coding=utf-8
# 所有备注"edit_admitted"的行,可进行文本编辑
hp = 300 # 己方hp # edit_admitted
hpe = 300 # 对方hp # edit_admitted
med1 = 3 # 第一种药的数量 # edit_admitted
med2 = 3 # 第二种药的数量 # edit_admitted




# 储存精灵名称的字典文件
pokemon_dict = {"pokemon_name_1": "耿鬼",
"pokemon_name_2": "皮卡丘",
"pokemon_name_3": "巨沼怪",
}


# 储存对手精灵数据的字典文件
e_dict = {"e_name_1": "喷火龙",
"e_name_2": "暴鲤龙",
"e_name_3": "幸福蛋"
}


#精灵技能的字典
## 耿鬼技能字典
pokemon_1_skill_dict = {"skill_1_name": "影子球",
"skill_1_overview": "必然命中,造成70点伤害",
"skill_1_demage": 70,
"skill_1_acc": 1,
"skill_2_name" : "十万伏特",
"skill_2_overview": "90%命中,造成120伤害",
"skill_2_demage": 120,
"skill_2_acc": 0.9,
"skill_3_name" : "催眠术(未实装)",
"skill_3_overview": "未实装",
"skill_4_name" : "食梦(未实装)",
"skill_4_overview": "未实装"
}


## 皮卡丘技能字典
pokemon_2_skill_dict = {"skill_1_name" : "电光火石",
"skill_1_overview": "必然命中,造成60点伤害",
"skill_1_demage": 60,
"skill_1_acc": 1,
"skill_2_name" : "十万伏特",
"skill_2_overview": "90%命中,造成120伤害",
"skill_2_demage": 120,
"skill_2_acc": 0.9,
"skill_3_name": "电磁波(未实装)",
"skill_3_overview": "未实装",
"skill_3_acc": 1,
"skill_4_name":"地球上投",
"skill_4_overview": "必定命中,对敌人造成固定的100点伤害",
"skill_4_demage": 100,
"skill_4_acc": 1
}


## 幸福蛋技能字典(未完成)
pokemon_3_skill_dict = {"skill_1_name" : "电光火石",
"skill_1_overview": "必然命中,造成60点伤害",
"skill_1_demage": 60,
"skill_1_acc": 1,
"skill_2_name" : "十万伏特",
"skill_2_overview": "90%命中,造成120伤害",
"skill_2_demage": 120,
"skill_2_acc": 0.9,
"skill_3_name" : "电磁波(未实装)",
"skill_3_overview": "",
"skill_3_acc": 0,
"skill_4_name" : "地球上投",
"skill_4_overview": "必定命中,对敌人造成固定的100点伤害",
"skill_4_demage": 100,
"skill_4_acc": 1
}


# 敌人技能的字典
##喷火龙技能字典
e_1_skill_dict = {"skill_1_name": "喷射火焰",
"skill_1_overview": "喷射出火焰,70%机率命中,对敌人造成120点伤害",
"skill_1_demage": 120,
"skill_1_acc": 0.7,
"skill_2_name": "火苗",
"skill_2_overview": "喷射出小火苗,90%机率命中,对敌人造成60点伤害",
"skill_2_demage": 60,
"skill_2_acc": 0.9,
"skill_3_name": "地球上投",
"skill_3_overview": "必定命中,对敌人造成固定的100点伤害",
"skill_3_demage": 100,
"skill_3_acc": 1,
"skill_4_name": "龙之怒",
"skill_4_overview": "", # 数值已完成 描述未完成
"skill_4_demage": 70,
"skill_4_acc": 0.9,
}


## 暴鲤龙技能字典
e_2_skill_dict = {"skill_1_name": "冲浪术",
"skill_1_overview": "90%命中,对敌人造成95点伤害",
"skill_1_demage": 95,
"skill_1_acc": 1,
"skill_2_name": "登瀑术",
"skill_2_overview": "必定命中,造成60点伤害",
"skill_2_demage": 60,
"skill_2_acc": 1,
"skill_3_name": "地球上投",
"skill_3_overview": "必定命中,对敌人造成固定的100点伤害",
"skill_3_demage": 100,
"skill_3_acc": 1,
"skill_4_name": "龙之吐息(未实装)",
"skill_4_overview": "",
"skill_4_demage": 0,
"skill_4_acc": 0,
}


##巨沼怪技能字典
e_3_skill_dict = {"skill_1_name": "冲浪术",
"skill_1_overview": "90%命中,对敌人造成95点伤害",
"skill_1_demage": 95,
"skill_1_acc": 1,
"skill_2_name": "地震",
"skill_2_overview": "95机率命中,造成120点伤害",
"skill_2_demage": 60,
"skill_2_acc": 0.9,
"skill_3_name": "地球上投",
"skill_3_overview": "必定命中,对敌人造成固定的100点伤害",
"skill_3_demage": 100,
"skill_3_acc": 1,
"skill_4_name": "冰冻拳",
"skill_4_overview": "90命中,对敌人造成90点伤害",
"skill_4_demage": 90,
"skill_4_acc": 0.9,
}


# 游戏前的文字介绍
def shuoming():
print("游戏介绍:")
time.sleep(1)
print("没错,这是一场神奇宝贝对决!")
time.sleep(1)
print("请使用你最厉害的方法去打败敌人吧!")
time.sleep(1)
print("但是请记住:不要取巧,专心战斗!")
time.sleep(1)
print("狭路相逢勇者胜!\r\n\r\n\r\n")
time.sleep(1)
print("***警告***\r\n 全程请不要输入英文。只输入数字就好。\r\n\r\n\r\n")
time.sleep(1.5)


# 错误输入提示
def mess():
time.sleep(1)
print("你再别胡输入了\r\n\r\n")


# 挑选己方精灵
# 1 耿鬼
# 2 皮卡丘
# 3 幸福蛋
def select_pokemon():
a = 0 # 判断while的参数
global pokemon_skill_dict
print("\r\n请挑选你的精灵!\r\n\r\n")
time.sleep(0.2)
print("1.耿鬼\r\n 鬼系神奇宝贝,擅长使用鬼系高伤害技能或各类异常状态击败对手\r\n\r\n \
2.皮卡丘\r\n 电系神奇宝贝,擅长使用十万伏特击败对手( ̄ε(# ̄) \r\n\r\n \
3.幸福蛋\r\n 这个精灵我就8多说了吧,懂得都懂。nb就完事了。\r\n\r\n") # edit_admitted
while a == 0:
main_menu = (input("输入对应数字,选择你出战的精灵\r\n")) # edit_admitted
if len(main_menu) != len("1"):
print("请输入正确的数字!")
continue
if ord(main_menu) != (ord("1") or ord("2") or ord("3")):
print("请输入正确的数字!")
continue
main_menu = int(main_menu)
if main_menu == 1:
pokemon_name = "pokemon_name_1"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(pokemon_dict[pokemon_name])) # edit_admitted
if judge == "y":
a = 1
pokemon_skill_dict = pokemon_1_skill_dict
break
if judge == "n":
a = 0
else:
print("请输入正确的字母!")
continue
if main_menu == 2:
pokemon_name = "pokemon_name_2"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(pokemon_dict[pokemon_name])) # edit_admitted
if judge == "y":
a = 1
pokemon_skill_dict = pokemon_2_skill_dict
break
if judge == "n":
a = 0
else:
print("请输入正确的字母!")
continue
if main_menu == 3:
pokemon_name = "pokemon_name_3"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(pokemon_dict[pokemon_name])) # edit_admitted
if judge == "y":
a = 1
pokemon_skill_dict = pokemon_3_skill_dict
break
if judge == "n":
a = 0
else:
print("请输入正确的字母!")
continue
return pokemon_dict[pokemon_name]


# 挑选对方精灵
# 1 喷火龙
# 2 暴鲤龙
# 3 巨沼怪
def select_e():
global e_skill_dict
a = 0 # 判断while的参数
print("\r\n请挑选你的对手!\r\n\r\n")
time.sleep(0.2)
print("1.喷火龙\r\n 小智频频逆天究竟为何?是谁只爱睡觉不战斗?一切的答案都在这个精灵的身上!!\r\n\r\n\
2.暴鲤龙\r\n 兄弟们这个东西有多diao我就不说了好吧。nb就完事了\r\n\r\n\
3.巨沼怪\r\n 386的水主,我的最爱之一。属性好打击面广弱点少,看看你怎么打败他吧!\r\n\r\n")
while a == 0:
main_menu = (input("输入对应数字,选择你出战的精灵\r\n"))
if len(main_menu) != len("1"):
print("请输入正确的数字!")
continue
if ord(main_menu) != (ord("1") or ord("2") or ord("3")):
print("请输入正确的数字!")
continue
main_menu = int(main_menu)
if main_menu == 1:
e_name = "e_name_1"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(e_dict[e_name])) # edit_admitted
if judge == "y":
a = 1
e_skill_dict = e_1_skill_dict
break
if judge == "n":
a = 0
if main_menu == 2:
e_name = "e_name_2"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(e_dict[e_name])) # edit_admitted
if judge == "y":
a = 1
e_skill_dict = e_2_skill_dict
break
if judge == "n":
a = 0
if main_menu == 3:
e_name = "e_name_3"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(e_dict[e_name])) # edit_admitted
if judge == "y":
a = 1
e_skill_dict = e_3_skill_dict
break
if judge == "n":
a = 0
else:
print("请输入正确的数字\r\n")
continue
return e_dict[e_name]


# 剩余hp,每次行动之后显示
def sy():
per_pokemon_hp = int(10 * (hp/100))
per_e_hp = int(10 * (hpe/100))
time.sleep(1)
print("/", "#" * per_pokemon_hp, "-" * (30 - per_pokemon_hp), "/", "{1} 剩余HP:{0} / 300".format(hp, pokemon_name))
time.sleep(1)
print("/", "#" * per_e_hp, "-" * (30 - per_e_hp), "/", "{1} 剩余HP:{0} / 300".format(hpe, e_name))
time.sleep(1)
print("" * 3)


# 己方战斗函数
def demage(attack, defend, attack_skill_dict):
i = 0
while i == 0:
jineng_number = (input("请输入编号使用技能:\r\n1.{0}({1})\r\n2.{2}({3})\r\n3.{4}({5})\r\n4.{6}({7})\r\n5.返回上一级\r\n\r\n".format(attack_skill_dict["skill_1_name"],attack_skill_dict["skill_1_overview"],attack_skill_dict["skill_2_name"],attack_skill_dict["skill_2_overview"],attack_skill_dict["skill_3_name"],attack_skill_dict["skill_3_overview"],attack_skill_dict["skill_4_name"],attack_skill_dict["skill_4_overview"])))
if len(jineng_number) != 1:
print("请输入正确的数字!\r\n\r\n")
continue
if ord(jineng_number) != (ord("1") or ord("2") or ord("3") or ord("4")):
print("请输入正确的数字2!\r\n\r\n")
continue
jineng_number = int(jineng_number)
if jineng_number == 1:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_1_name"]))
time.sleep(1)
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_1_acc"])):
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_1_demage"]))
demage = attack_skill_dict["skill_1_demage"]
i = 1
else:
print("但是没有命中......")
demage = 0
i = 1
if jineng_number == 2:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_2_name"]))
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_2_acc"])):
time.sleep(1)
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_2_demage"]))
demage = attack_skill_dict["skill_2_demage"]
i = 1
else:
print("但是没有命中......")
demage = 0
i = 1
if jineng_number == 3:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_3_name"]))
time.sleep(1)
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_3_acc"])):
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_3_demage"]))
demage = attack_skill_dict["skill_3_demage"]
else:
print("但是没有命中......")
demage = 0
if jineng_number == 4:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_4_name"]))
time.sleep(1)
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_4_acc"])):
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_4_demage"]))
demage = attack_skill_dict["skill_4_demage"]
else:
print("但是没有命中......")
demage = 0
if jineng_number == 5:
print("\r\n")
continue
return demage

# 敌人战斗函数
def e_demage(attack, defend, attack_skill_dict):
jineng_number = int(random.randint(1,4))
if jineng_number == 1:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_1_name"]))
time.sleep(1)
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_1_acc"])):
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_1_demage"]))
demage = attack_skill_dict["skill_1_demage"]
else:
print("但是没有命中......")
demage = 0
if jineng_number == 2:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_2_name"]))
time.sleep(1)
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_2_acc"])):
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_2_demage"]))
demage = attack_skill_dict["skill_2_demage"]
else:
print("但是没有命中......")
demage = 0
if jineng_number == 3:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_3_name"]))
time.sleep(1)
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_3_acc"])):
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_3_demage"]))
demage = attack_skill_dict["skill_3_demage"]
else:
print("但是没有命中......")
demage = 0
if jineng_number == 4:
print("{0}使用了{1}!".format(attack, attack_skill_dict["skill_4_name"]))
time.sleep(1)
if random.uniform(0, 1) >= (1 - (attack_skill_dict["skill_4_acc"])):
print("对{0}造成了{1}点伤害!\r\n".format(defend, attack_skill_dict["skill_4_demage"]))
demage = attack_skill_dict["skill_4_demage"]
else:
print("但是没有命中......")
demage = 0
return demage


# 战斗过程函数
# 之后要做出“属性”概念,每个精灵的血量要有区别
def battle():
global med1, med2, hp, hpe, e_name, pokemon_name
print("\r\n野生的{0}出现了!".format(e_name))
time.sleep(1)
print("去吧,{0}!!!\r\n".format(pokemon_name))
while (hp > 0 and hpe >0):
hpe -= demage(attack = pokemon_name, defend = e_name, attack_skill_dict = pokemon_skill_dict)
if hpe > 0:
hp -= e_demage(attack = e_name, defend = pokemon_name, attack_skill_dict = e_skill_dict)
sy()
if hpe <0:
hpe = 0
if hp <= 0 and hpe <= 0:
time.sleep(1)
print("dbq,平局算你输哦")
time.sleep(1)
if hpe <= 0 and hp > 0:
time.sleep(1)
print("野生的{}不行了!!".format(e_name))
time.sleep(1)
print("你获得了胜利!!!")
time.sleep(1)
if hp <= 0 and hpe > 0:
time.sleep(1)
print("彩笔,这都打不赢吗???")
time.sleep(1)


# 主代码
shuoming()
time.sleep(1)
pokemon_name = select_pokemon()
e_name = select_e()
battle()

2020.4.29

更新内容

  • 实装了所有精灵。个别技能尚未实装(主要是异常状态类的技能尚未实装
  • 已完成己方精灵的战斗流程
  • 将所有精灵的名称、技能、描述等相关内容全部写入字典文件,方便调用、增删
  • 将战斗部分写为函数,方便以后调用

下一步更新内容

  • 对代码进一步优化。(今天散步的路上又想到了更简洁的逻辑顺序,将着手更改✌🏻️️)
  • 完成敌方精灵的战斗流程编写
  • 加入属性克制系统(可能会比较远
  • 加入异常状态系统(可能会比较远
  • 加入精灵三维图(可能会比较远

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
import time
import random


# coding=utf-8
# 所有备注"edit_admitted"的行,可进行文本编辑
hp = 300 # 己方hp # edit_admitted
hpe = 300 # 对方hp # edit_admitted
med1 = 3 # 第一种药的数量 # edit_admitted
med2 = 3 # 第二种药的数量 # edit_admitted


# 储存精灵名称的字典文件
pokemon_dict = {"pokemon_name_1": "耿鬼",
"pokemon_name_2": "皮卡丘",
"pokemon_name_3": "巨沼怪",
}


# 储存对手精灵数据的字典文件
e_dict = {"e_name_1": "喷火龙",
"e_name_2": "暴鲤龙",
"e_name_3": "幸福蛋"
}


#精灵技能的字典
## 耿鬼技能字典
pokemon_1_skill_dict = {"pokemon_skill_1_name": "影子球",
"pokemon_skill_1_overview": "必然命中,造成70点伤害",
"pokemon_skill_1_demage": 70,
"pokemon_skill_1_acc": 1,
"pokemon_skill_2_name" : "十万伏特",
"pokemon_skill_2_overview": "90%命中,造成120伤害",
"pokemon_skill_2_demage": 120,
"pokemon_skill_2_acc": 0.9,
"pokemon_skill_3_name" : "催眠术",
"pokemon_skill_3_overview": "未实装",
"pokemon_skill_4_name" : "食梦",
"pokemon_skill_4_overview": "未实装"
}


## 皮卡丘技能字典
pokemon_2_skill_dict = {"pokemon_skill_1_name" : "电光火石",
"pokemon_skill_1_overview": "必然命中,造成60点伤害",
"pokemon_skill_1_demage": 60,
"pokemon_skill_1_acc": 1,
"pokemon_skill_2_name" : "十万伏特",
"pokemon_skill_2_overview": "90%命中,造成120伤害",
"pokemon_skill_2_demage": 120,
"pokemon_skill_2_acc": 0.9,
"pokemon_skill_3_name": "电磁波",
"pokemon_skill_3_overview": "未实装",
"pokemon_skill_3_acc": 1,
"pokemon_skill_4_name":"地球上投",
"pokemon_skill_4_overview": "必定命中,对敌人造成固定的100点伤害",
"pokemon_skill_4_demage": 100,
"pokemon_skill_4_acc": 1
}


## 幸福蛋技能字典(未完成)
pokemon_3_skill_dict = {"pokemon_skill_1_name" : "电光火石",
"pokemon_skill_1_overview": "必然命中,造成60点伤害",
"pokemon_skill_1_demage": 60,
"pokemon_skill_1_acc": 1,
"pokemon_skill_2_name" : "十万伏特",
"pokemon_skill_2_overview": "90%命中,造成120伤害",
"pokemon_skill_2_demage": 120,
"pokemon_skill_2_acc": 0.9,
"pokemon_skill_3_name" : "电磁波",
"pokemon_skill_3_overview": "未实装",
"pokemon_skill_3_acc": 0,
"pokemon_skill_4_name" : "地球上投",
"pokemon_skill_4_overview": "必定命中,对敌人造成固定的100点伤害",
"pokemon_skill_4_demage": 100,
"pokemon_skill_4_acc": 1
}


# 敌人技能的字典
##喷火龙技能字典
e_1_skill_dict = {"e_skill_1_name": "喷射火焰",
"e_skill_1_overview": "喷射出火焰,70%机率命中,对敌人造成120点伤害",
"e_skill_1_demage": 120,
"e_skill_1_acc": 0.7,
"e_skill_2_name": "火苗",
"e_skill_2_overview": "喷射出小火苗,90%机率命中,对敌人造成60点伤害",
"e_skill_2_demage": 60,
"e_skill_2_acc": 0.9,
"e_skill_3_name": "地球上投",
"e_skill_3_overview": "必定命中,对敌人造成固定的100点伤害",
"e_skill_3_demage": 100,
"e_skill_3_acc": 1,
"e_skill_4_name": "龙之怒",
"e_skill_4_overview": "未实装",
"e_skill_4_demage": 0,
"e_skill_4_acc": 0,
}


## 暴鲤龙技能字典
e_2_skill_dict = {"e_skill_1_name": "冲浪术",
"e_skill_1_overview": "90%命中,对敌人造成95点伤害",
"e_skill_1_demage": 95,
"e_skill_1_acc": 1,
"e_skill_2_name": "登瀑术",
"e_skill_2_overview": "必定命中,造成60点伤害",
"e_skill_2_demage": 60,
"e_skill_2_acc": 1,
"e_skill_3_name": "地球上投",
"e_skill_3_overview": "必定命中,对敌人造成固定的100点伤害",
"e_skill_3_demage": 100,
"e_skill_3_acc": 1,
"e_skill_4_name": "龙之吐息",
"e_skill_4_overview": "未实装",
"e_skill_4_demage": 0,
"e_skill_4_acc": 0,
}


##巨沼怪技能字典
e_3_skill_dict = {"e_skill_1_name": "冲浪术",
"e_skill_1_overview": "90%命中,对敌人造成95点伤害",
"e_skill_1_demage": 95,
"e_skill_1_acc": 1,
"e_skill_2_name": "地震",
"e_skill_2_overview": "95机率命中,造成120点伤害",
"e_skill_2_demage": 60,
"e_skill_2_acc": 0.9,
"e_skill_3_name": "地球上投",
"e_skill_3_overview": "必定命中,对敌人造成固定的100点伤害",
"e_skill_3_demage": 100,
"e_skill_3_acc": 1,
"e_skill_4_name": "冰冻拳",
"e_skill_4_overview": "90命中,对敌人造成90点伤害",
"e_skill_4_demage": 90,
"e_skill_4_acc": 0.9,
}


# 游戏前的文字介绍
def shuoming():
print("游戏介绍:")
time.sleep(1)
print("没错,这是一场神奇宝贝对决!")
time.sleep(1)
print("请使用你最厉害的方法去打败敌人吧!")
time.sleep(1)
print("但是请记住:不要取巧,专心战斗!")
time.sleep(1)
print("狭路相逢勇者胜!\r\n\r\n\r\n")
time.sleep(1)
print("***警告***\r\n 全程请不要输入英文。只输入数字就好。\r\n\r\n\r\n")
time.sleep(2)


# 错误输入提示
def mess():
time.sleep(1)
print("你再别胡输入了\r\n\r\n")


# 挑选己方精灵
# 1 耿鬼
# 2 皮卡丘
# 3 幸福蛋
def select_pokemon():
a = 0 # 判断while的参数
global pokemon_skill_dict
print("\r\n请挑选你的精灵!\r\n\r\n")
time.sleep(0.2)
print("1.耿鬼\r\n鬼系神奇宝贝,擅长使用鬼系高伤害技能或各类异常状态击败对手\r\n\r\n \
2.皮卡丘\r\n电系神奇宝贝,擅长使用十万伏特击败对手( ̄ε(# ̄) \r\n\r\n \
3.幸福蛋\r\n 这个精灵我就8多说了吧,懂得都懂。nb就完事了。\r\n\r\n") # edit_admitted
while a == 0:
main_menu = eval(input("输入对应数字,选择你出战的精灵\r\n")) # edit_admitted
if main_menu == 1:
pokemon_name = "pokemon_name_1"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(pokemon_dict[pokemon_name])) # edit_admitted
if judge == "y":
a = 1
pokemon_skill_dict = pokemon_1_skill_dict
break
if judge == "n":
a = 0
if main_menu == 2:
pokemon_name = "pokemon_name_2"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(pokemon_dict[pokemon_name])) # edit_admitted
if judge == "y":
a = 1
pokemon_skill_dict = pokemon_2_skill_dict
break
if judge == "n":
a = 0
if main_menu == 3:
pokemon_name = "pokemon_name_3"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(pokemon_dict[pokemon_name])) # edit_admitted
if judge == "y":
a = 1
pokemon_skill_dict = pokemon_3_skill_dict
break
if judge == "n":
a = 0
else:
print("请输入正确的数字\r\n")
continue
return pokemon_dict[pokemon_name]


# 挑选对方精灵
# 1 喷火龙
# 2 暴鲤龙
# 3 幸福蛋
def select_e():
a = 0 # 判断while的参数
print("\r\n请挑选你的对手!\r\n\r\n")
time.sleep(0.2)
print("1.喷火龙\r\n 小智频频逆天究竟为何?是谁只爱睡觉不战斗?一切的答案都在这个精灵的身上!!\r\n\r\n\
2.暴鲤龙\r\n 兄弟们这个东西有多diao我就不说了好吧。nb就完事了\r\n\r\n\
3.巨沼怪\r\n386的水主,我的最爱之一。属性好打击面广弱点少,看看你怎么打败他吧!\r\n\r\n")
while a == 0:
main_menu = eval(input("输入对应数字,选择你出战的精灵\r\n"))
if main_menu == 1:
e_name = "e_name_1"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(e_dict[e_name])) # edit_admitted
if judge == "y":
a = 1
break
if judge == "n":
a = 0
if main_menu == 2:
e_name = "e_name_2"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(e_dict[e_name])) # edit_admitted
if judge == "y":
a = 1
break
if judge == "n":
a = 0
if main_menu == 3:
e_name = "e_name_3"
judge = input("你选择的是 {0} ,确定吗?(输入y/n)\r\n".format(e_dict[e_name])) # edit_admitted
if judge == "y":
a = 1
break
if judge == "n":
a = 0
else:
print("请输入正确的数字\r\n")
continue
return e_dict[e_name]


# 剩余hp,每次行动之后显示
def sy(pokemon_name, e_name): # pn,己方名称。en,敌方名称
per_pokemon_hp = int(10 * (hp/300))
per_e_hp = int(10 * (hpe/300))
time.sleep(1)
print("/", "#" * per_pokemon_hp, "-" * (10 - per_pokemon_hp), "/", "{1}剩余HP:{0}/300".format(hp, pokemon_name))
time.sleep(1)
print("/", "#" * per_e_hp, "-" * (10 - per_e_hp), "/", "{1}剩余HP:{0}/300".format(hpe, e_name))
time.sleep(1)
print("" * 3)


# 喷射火焰。技能的函数应用形式
# 其余招式并未函数化,储存在主代码中
def ea(demage): # 敌人技能(只有一种)
if random.uniform(0, 1) <= 0.7:
time.sleep(1)
print("{0}使用了{1}!!").format(e_name, pokemon_skill_name)
time.sleep(2)
print("对{0}造成了70点伤害!\r\n").format(pokemon_name)
demage = demage - 70
return demage
else:
time.sleep(1)
print("{0}使用了{1}!!").format(e_name, en_skill_name)
time.sleep(2)
print("但是没有命中......\r\n")
return demage


# 战斗函数
def battle():
global med1, med2, hp, hpe # 之后要做出“属性”概念,每个精灵的血量要有区别
while hpe > 0 and hp > 0:
sy(pokemon_name, e_name)
time.sleep(1)
main_menu = eval(input("准备做什么:\r\n战斗请输入1\r\n使用药物请输入2\r\n使用大师球请输入3\r\n逃跑请输入4\r\n"))
if main_menu == 1:
jineng_number = eval(input("请输入编号使用技能:\r\n1.{0}({1})\r\n2.{2}({3})\r\n3.{4}({5})\r\n4.{6}({7})\r\n5.返回上一级\r\n\
".format(pokemon_skill_dict["pokemon_skill_1_name"],pokemon_skill_dict["pokemon_skill_1_overview"],pokemon_skill_dict["pokemon_skill_2_name"],pokemon_skill_dict["pokemon_skill_2_overview"],pokemon_skill_dict["pokemon_skill_3_name"],pokemon_skill_dict["pokemon_skill_3_overview"],pokemon_skill_dict["pokemon_skill_4_name"],pokemon_skill_dict["pokemon_skill_4_overview"])))
if jineng_number == 1:
if random.uniform(0, 1) >= (1 - (pokemon_skill_dict["pokemon_skill_1_acc"])):
time.sleep(1)
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_1_name"]))
time.sleep(2)
print("对{0}造成了{1}点伤害!\r\n".format(e_name, pokemon_name,))
hpe -= eval(pokemon_skill_dict["skill_1_demage"])
else:
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_1_name"]))
print("但是没有命中......")
if hpe > 0:
continue
if jineng_number == 2:
if random.uniform(0, 1) >= (1 - (pokemon_skill_dict["pokemon_skill_2_acc"])):
time.sleep(1)
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_2_name"]))
time.sleep(2)
print("对{0}造成了{1}点伤害!\r\n".format(e_name, pokemon_name,))
hpe -= eval(pokemon_skill_dict["skill_2_demage"])
else:
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_2_name"]))
print("但是没有命中......")
if hpe > 0:
continue
if jineng_number == 3:
if random.uniform(0, 1) >= (1 - (pokemon_skill_dict["pokemon_skill_3_acc"])):
time.sleep(1)
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_3_name"]))
time.sleep(2)
print("对{0}造成了{1}点伤害!\r\n".format(e_name, pokemon_name,))
hpe -= eval(pokemon_skill_dict["skill_3_demage"])
else:
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_3_name"]))
print("但是没有命中......")
if hpe > 0:
continue
if jineng_number == 4:
if random.uniform(0, 1) >= (1 - (pokemon_skill_dict["pokemon_skill_4_acc"])):
time.sleep(1)
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_4_name"]))
time.sleep(2)
print("对{0}造成了{1}点伤害!\r\n".format(e_name, pokemon_name,))
hpe -= eval(pokemon_skill_dict["skill_4_demage"])
else:
print("{0}使用了{1}!".format(pokemon_name, pokemon_dict["pokemon_skill_4_name"]))
print("但是没有命中......")
if hpe > 0:
continue
else:
mess()
continue
if main_menu == 2:
y = eval(input("请选择使用什么物品\r\n1.回复药膏(回复50点hp)(剩余{0})\r\n2.大回复药(回复100点hp)(剩余{1})\r\n3.返回上一级\r\n".format(med1, med2)))
if y == 1:
if med1 > 0:
hp += 50
if hp > 300:
hp = 300
med1 -= 1
print("你使用了回复药膏!")
time.sleep(1)
print("{}的生命恢复了!\r\n".format(pokemon_name))
hp = ea(hp)
continue
else:
time.sleep(1)
print("你没有这个药了!\r\n")
time.sleep(1)
continue
if y == 2:
if med2 > 0:
hp += 100
if hp > 300:
hp = 300
med2 -= 1
print("你使用了大回复药膏!")
time.sleep(1)
print("{}的生命恢复了!\r\n".format(pokemon_name))
hp = ea(hp)
continue
else:
time.sleep(1)
print("你没有这个药了!\r\n")
time.sleep(1)
continue
if y == 3:
continue
else:
mess()
continue
if main_menu == 3:
time.sleep(1)
print("dbq你没有大师球hhhh\r\n")
time.sleep(1)
hp = ea(hp)
continue
if main_menu == 4:
time.sleep(1)
print("别逃跑了,就这一个敌人,打完了我还要结束程序呢,弟弟\r\n")
time.sleep(1)
hp = ea(hp)
continue
else:
mess()
continue

if hp <= 0 and hpe <= 0:
time.sleep(1)
print("dbq,平局算你输哦")
time.sleep(1)
else:
if hpe <= 0:
time.sleep(1)
print("野生的{}不行了!!".format(e_name))
time.sleep(1)
print("你获得了胜利!!!")
time.sleep(1)
if hp <= 0:
time.sleep(1)
print("彩笔,这都打不赢吗???")
time.sleep(1)


# 主代码
shuoming()
time.sleep(1)
pokemon_name = select_pokemon()
e_name = select_e()
print("\r\n野生的%s出现了!" % (e_name))
time.sleep(1)
print("去吧,%s!!!\r\n" % (pokemon_name))
battle()

2020.4.22

更新内容

  • 加入己方精灵和敌方精灵的选择。计划出场的有:
    • 耿鬼
    • 皮卡丘
    • 巨沼怪
    • 喷火龙
    • 暴鲤龙
    • 幸福蛋

或许可以加入非pokemon从而弄成大乱斗???hhh

  • 在剩余血量部分加入简陋的hp条,方便观看

下一步工作内容

  • 修改核心部分。将技能做成函数形式,方便调用

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
import time
import random


# coding=utf-8
# 所有备注"edit_admitted"的行,可进行文本编辑

# 目前存在的问题:
# 1.可读性很差。即不够模块化
# 2.信息的延迟显示(按键显示)


# 游戏前的文字介绍


def shuoming():
print("游戏介绍:")
time.sleep(1)
print("没错,这是一场神奇宝贝对决!")
time.sleep(1)
print("请使用你最厉害的方法去打败敌人吧!")
time.sleep(1)
print("但是请记住:不要取巧,专心战斗!")
time.sleep(1)
print("狭路相逢勇者胜!\r\n\r\n\r\n")
time.sleep(1)
print("***警告***\r\n 全程请不要输入英文。只输入数字就好。\r\n\r\n\r\n")
time.sleep(2)


# 错误输入提示


def mess():
time.sleep(1)
print("你再别胡输入了\r\n\r\n")


# 挑选己方精灵
# 1 耿鬼
# 2 皮卡丘
# 3 还没想好
def select_pokemon():
a = 0 # 判断while的参数
number = 0
print("\r\n请挑选你的精灵!\r\n\r\n")
time.sleep(0.2)
print("1.耿鬼\r\n鬼系神奇宝贝,擅长使用鬼系高伤害技能或各类异常状态击败对手\r\n\r\n2.皮卡丘\r\n电系神奇宝贝,擅长使用十万伏特击败对手( ̄ε(# ̄) \r\n\r\n3.还没想好\r\n") # edit_admitted
while a == 0:
x = eval(input("输入对应数字,选择你出战的精灵\r\n")) # edit_admitted
if x == 1:
judge = input("你选择的是 耿鬼 ,确定吗?(输入y/n)\r\n") # edit_admitted
if judge == "y":
a = 1
number = 1
break
if judge == "n":
a = 0
if x == 2:
judge = input("你选择的是 皮卡丘 ,确定吗?(输入y/n)\r\n") # edit_admitted
if judge == "y":
a = 1
number = 2
break
if judge == "n":
a = 0
else:
print("请输入正确的数字\r\n")
continue
return number


# 将精灵代号转换到字符串中
def pokemon_name_str(number):
if number == 1:
pokemon_name = "耿鬼" # edit_admitted
if number == 2:
pokemon_name = "皮卡丘" # edit_admitted
return pokemon_name


# 挑选对方精灵
# 1 喷火龙
# 2 没想好
def select_e():
a = 0 # 判断while的参数
number = 0
print("\r\n请挑选你的对手!\r\n\r\n")
time.sleep(0.2)
print("1.喷火龙\r\n8多说了吧,懂得都懂\r\n")
while a == 0:
x = eval(input("输入对应数字,选择你出战的精灵\r\n"))
if x == 1:
judge = input("你选择的是 喷火龙 ,确定吗?(输入y/n)\r\n")
if judge == "y":
a = 1
number = 1
break
if judge == "n":
a = 0
else:
print("请输入正确的数字\r\n")
continue
return number


# 将对手代号转换到字符串中
def e_name_str(number):
if number == 1:
e_name = "喷火龙"
return e_name


# 剩余hp,每次行动之后显示
def sy(pokemon_name, e_name): # pn,己方名称。en,敌方名称
per_pokemon_hp = int(10 * (hp/300))
per_e_hp = int(10 * (hpe/300))
time.sleep(1)
print("/", "#" * per_pokemon_hp, "-" * (10 - per_pokemon_hp), "/", "{1}剩余HP:{0}/300".format(hp, pokemon_name))
time.sleep(1)
print("/", "#" * per_e_hp, "-" * (10 - per_e_hp), "/", "{1}剩余HP:{0}/300".format(hpe, e_name))
time.sleep(1)
print("" * 3)


# 喷射火焰。技能的函数应用形式
# 其余招式并未函数化,储存在主代码中
def ea(demage): # 敌人技能(只有一种)
if random.uniform(0, 1) <= 0.7:
time.sleep(1)
print("{0}使用了{1}!!").format(e_name, pokemon_skill_name)
time.sleep(2)
print("对{0}造成了70点伤害!\r\n").format(pokemon_name)
demage = demage - 70
return demage
else:
time.sleep(1)
print("{0}使用了{1}!!").format(e_name, en_skill_name)
time.sleep(2)
print("但是没有命中......\r\n")
return demage


# 主代码
shuoming()
time.sleep(1)
pokemon_number = select_pokemon()
pokemon_name = pokemon_name_str(pokemon_number)
e_number = select_e()
e_name = e_name_str(e_number)
print("\r\n野生的%s出现了!" % (e_name))
time.sleep(1)
print("去吧,%s!!!\r\n" % (pokemon_name))
hp = 300 # 己方hp
hpe = 300 # 对方hp
med1 = 3 # 第一种药的数量
med2 = 3 # 第二种药的数量
try:
while hpe > 0 and hp > 0:
time.sleep(1)
sy(pokemon_name, e_name)
x = input("准备做什么:\r\n战斗请输入1\r\n使用药物请输入2\r\n使用大师球请输入3\r\n逃跑请输入4\r\n")
x = eval(x)
if x == 1:
jineng = input("请输入编号使用技能:\r\n1.无影拳(必中,70伤害)\r\n2.暗影冲击(90%命中率,100伤害)\r\n3.超级新星(70%命中率,130伤害)\r\n4.返回上一级\r\n")
jineng = int(jineng)
if jineng == 1:
time.sleep(1)
print("耿鬼使用了无影拳!")
time.sleep(2)
print("对喷火龙造成了70点伤害!\r\n")
hpe -= 70
if hpe > 0:
hp = ea(hp)
continue
if jineng == 2:
if random.uniform(0, 1) >= 0.1:
time.sleep(1)
print("耿鬼使用了暗影冲击!")
time.sleep(2)
print("对喷火龙造成了100点伤害!\r\n")
hpe -= 100
else:
time.sleep(1)
print("耿鬼是用了暗影冲击!")
time.sleep(2)
print("但是没有命中......\r\n")
if hpe > 0:
hp = ea(hp)
continue
if jineng == 3:
if random.uniform(0, 1) <= 0.3:
time.sleep(1)
print("耿鬼使用了超级新星!")
time.sleep(2)
print("但是没有命中.....\r\n")
else:
time.sleep(1)
print("耿鬼使用了超级新星!")
time.sleep(2)
print("造成了130点伤害!\r\n")
hpe -= 130
if hpe > 0:
time.sleep(1)
hp = ea(hp)
continue
if jineng == 4:
continue
else:
mess()
continue
if x == 2:
y = input("请选择使用什么物品\r\n1.回复药膏(回复50点hp)(剩余{0})\r\n2.大回复药(回复100点hp)(剩余{1})\r\n3.返回上一级\r\n".format(med1, med2))
y = int(y)
if y == 1:
if med1 > 0:
hp += 50
if hp > 300:
hp = 300
med1 -= 1
print("你使用了回复药膏!")
time.sleep(1)
print("耿鬼的生命恢复了!\r\n")
hp = ea(hp)
continue
else:
time.sleep(1)
print("你没有这个药了!\r\n")
time.sleep(1)
continue
if y == 2:
if med2 > 0:
hp += 100
if hp > 300:
hp = 300
med2 -= 1
print("你使用了大回复药膏!")
time.sleep(1)
print("耿鬼的生命恢复了!\r\n")
hp = ea(hp)
continue
else:
time.sleep(1)
print("你没有这个药了!\r\n")
time.sleep(1)
continue
if y == 3:
continue
else:
mess()
continue
if x == 3:
time.sleep(1)
print("dbq你没有大师球hhhh\r\n")
time.sleep(1)
hp = ea(hp)
continue
if x == 4:
time.sleep(1)
print("别逃跑了,就这一个敌人,打完了我还要结束程序呢,弟弟\r\n")
time.sleep(1)
hp = ea(hp)
continue
else:
mess()
continue
except:
mess()
print("让你别输入英文嘛,非不听")
time.sleep(2)
print("这下好了,重新开始吧")


if hp <= 0 and hpe <= 0:
time.sleep(1)
print("dbq,平局算你输哦")
time.sleep(1)
else:
if hpe <= 0:
time.sleep(1)
print("野生的喷火龙不行了!!")
time.sleep(1)
print("你获得了胜利!!!")
time.sleep(1)
if hp <= 0:
time.sleep(1)
print("彩笔,这都打不赢吗???")
time.sleep(1)
谢谢你的奶茶~
  • 本文标题: pokemonbattle小游戏[II]第二代更新历史(更新至2020.5.4)
  • 本文作者: liican
  • 创建于: 2020年04月21日 - 20时04分
  • 本文链接: https://liicanmt.github.io/2020/04/21/pokemonbattle2/ >
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!