#-*- encoding:utf-8 -*-
# ###########################################################################
python源碼下載、# # 從前,有一只怪獸Y被四位美麗的公主抓走(=。=),并關在一座魔塔中。 #
# # 終于有一位英雄X挺身而出去救出,為了救出怪獸而與公主們浴血奮戰。 #
# # 喂,什么設定 (ノ?益?)ノ彡┻━┻ #
python源碼安裝?# # 玩法:將下面的username/password更改為你的賬號與密碼, #
# # 啟動GameCli.py,然后請你寫一個AI程序與127.0.0.1:22031通信。 #
# # 每次客戶端都會發送當前局面,而你AI要做的就是根據局面發送行走指令。#
python優秀源碼?# # (hjkl這四個指令,你懂的)懂你喵!(╯>д<)╯?˙3˙? #
# # 狀態說明: #
# # ATK:攻擊力 DEF:防御力 HP: 生命值 #
python程序代碼、# # X:行坐標 Y:列坐標 L:當前樓層 #
# # Score:英雄分數,初始18888,每發一次指令-1,當分數為負時游戲結束 #
# # 游戲勝利時分數會計入排行榜,可打開218.245.4.113:5000查看當前排名 # #
用python制作游戲?# # 戰斗說明: #
# # 遭遇公主即觸發戰斗,采用回合制,每回合勇士先攻擊,然后公主攻擊。 #
# # 每次攻擊中 被攻擊目標HP損失=攻擊者ATK-被攻擊者DEF。 #
# # 說明: #
# # # ----- 墻,不可移動 #
# # . ----- 空地,可移動 #
# # / ----- 向上的樓梯,當走到該處會自動被傳送到上一層的向下樓梯處 #
# # \ ----- 向下的樓梯,當走到該處會自動被傳送到下一層的向上樓梯處 #
# # X ----- 你的英雄,初始 ATK:10 DEF:10 HP:1000 #
# # Y ----- 待拯救的怪獸 #
# # A ----- 紅寶石 ATK 5 #
# # D ----- 藍寶石 DEF 5 #
# # P ----- 阿三神油 HP 500 #
# # a ----- 公主a ATK:80 DEF:60 HP:1000 #
# # b ----- 公主b ATK:200 DEF:100 HP:100 #
# # c ----- 公主c ATK:300 DEF:150 HP:1000 #
# # d ----- 公主d ATK:300 DEF:250 HP:3000 #
# # 勝利條件:解決四位公主,拯救怪獸 #
# # 提示:可以先運行GameCli.py,再用TELNET連接,便于熟悉游戲 #
# # !!!注意:請不要對出題人進行人身攻擊!!! #
# # (╯‵□′)╯炸彈!???*~●出題人 #
# ###########################################################################
import socket
import re
import copy
import struct
def userInfo():
username = 'username'#改我改我 \(^o^)/~
password = 'password'#改我改我 o(*≧▽≦)ツ
return username '|' password
class game(object):
def __init__(self):
self.win = '''
...............................
.#.............#..#...##...#...
..#.....#.....#...#...#.#..#...
...#...#.#...#....#...#..#.#...
....#.#...#.#.....#...#...##...
.....#.....#......#...#....#...
.....%s....
....Your.Score:.%010d.....
'''
self.lose = '''
...............................
...#......##.....###...####....
...#.....#..#...#......#.......
...#.....#..#....##....####....
...#.....#..#......#...#.......
...####...##....###....####....
...............................
....Your.Score:.-111111111.....
'''
self.att = [
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~Your~Hero~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~ATK:%06d~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~DEF:%06d~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~HP:%07d~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~Score:%010d~',
'~~~~~~~~~~~~~~~~~~~',
'~~L:%03d~X:%02d~Y:%02d~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~',
'~~~~~~~~~~~~~~~~~~~'
]
self.f1ag = 'justforfun' #我是flag,交我交我 \(^o^)/~
self.map = ''
self.out = ''
self.ATK = 0
self.DEF = 0
self.HP = 0
self.Score = 0
self.posL = 0
self.posX = 0
self.posY = 0
self.stat = 0
self.flag = ''
def deal(self, s):
if len(s) > 441:
self.map = s[-441:]
self.stat, self.ATK, self.DEF, self.HP, self.posL, self.posX, self.posY, self.Score = struct.unpack('iiiiiiii',s[0:32])
r = re.findall('flag\{. \}', s)
if r:
self.flag = r[0]
return
def getAll(self):
if self.stat == 0:
return self.win % (self.flag, self.Score)
if self.stat == 1:
return self.lose
ret = list()
att = copy.deepcopy(self.att)
att[6] = att[6] % self.ATK
att[8] = att[8] % self.DEF
att[10] = att[10] % self.HP
att[12] = att[12] % self.Score
att[14] = att[14] % (self.posL, self.posX, self.posY)
for i in range(21):
ret.append(self.map[i*21:i*21 21] '|' att[i] '\n')
ret[self.posX] = list(ret[self.posX])
ret[self.posX][self.posY] = 'X'
ret[self.posX] = ''.join(ret[self.posX])
return ''.join(ret)
BUFFSIZE = 999999
HOST = '218.245.4.113'
#HOST = '127.0.0.1'
PORT = 21010
ADDR = (HOST, PORT)
LOCALHOST = '127.0.0.1'
LOCALPORT = 22031
LOCALADDR = (LOCALHOST, LOCALPORT)
tcpAISer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpAISer.bind(LOCALADDR)
tcpAISer.listen(5)
while True:
print('wating for AI...')
tcpAI, addr = tcpAISer.accept()
print('AI connection from:', addr)
tcpCliSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpCliSock.connect(ADDR)
tcpCliSock.send(userInfo())
r = tcpCliSock.recv(BUFFSIZE)
if r != 'OK':
print('Wrong')
exit()
g = game()
r = tcpCliSock.recv(BUFFSIZE)
g.deal(r)
tcpAI.send(g.getAll())
while True:
data = tcpAI.recv(BUFFSIZE)
try:
tcpCliSock.send(data)
except Exception:
break
if data == '!':
break
r = tcpCliSock.recv(BUFFSIZE)
g.deal(r)
print(g.getAll())
tcpAI.send(g.getAll())
if g.stat != 3:
break
tcpAI.close()
tcpCliSock.close()
socket.setdefaulttimeout(None)
print('Game Over')
break
tcpAISer.close()
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态