#-*- encoding:utf-8 -*-

# ###########################################################################

# # 从前,有一只怪兽Y被四位美丽的公主抓走(=。=),并关在一座魔塔中。 #

# # 终于有一位英雄X挺身而出去救出,为了救出怪兽而与公主们浴血奋战。 #

# # 喂,什么设定 (ノ?益?)ノ彡┻━┻ #

# # 玩法:将下面的username/password更改为你的账号与密码, #

# # 启动GameCli.py,然后请你写一个AI程序与127.0.0.1:22031通信。 #

# # 每次客户端都会发送当前局面,而你AI要做的就是根据局面发送行走指令。#

# # (hjkl这四个指令,你懂的)懂你喵!(╯>д<)╯?˙3˙? #

# # 状态说明: #

# # ATK:攻击力 DEF:防御力 HP: 生命值 #

# # X:行坐标 Y:列坐标 L:当前楼层 #

# # Score:英雄分数,初始18888,每发一次指令-1,当分数为负时游戏结束 #

# # 游戏胜利时分数会计入排行榜,可打开218.245.4.113:5000查看当前排名 # #

# # 战斗说明: #

# # 遭遇公主即触发战斗,采用回合制,每回合勇士先攻击,然后公主攻击。 #

# # 每次攻击中 被攻击目标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()

python游戏源码回合制游戏_python game源码下载相关推荐

  1. php做异步回合制,请问有哪些游戏属于半回合制游戏?

    其实没有很确定的"半回合制" 最不回合制的肯定是动作游戏,然后从动作游戏到 纯回合制,有这么几种机制: 一, 大回合制,高级战争之类的战棋游戏是这种机制.一方所有单位行动完了,另一 ...

  2. Unity3D游戏开发之回合制游戏原型的实现

    http://blog.csdn.net/qinyuanpei/article/details/28125171 大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/q ...

  3. java模拟回合制游戏大小姐_java – 回合制游戏设计:事件驱动与游戏...

    我用Java创建了我的第一个游戏.这场比赛是垄断.我正在努力设计游戏以模拟其回合制结构(管理玩家转弯).我想允许单个人控和一个或多个AI控制的玩家玩游戏. 我的具体问题是我不知道是否实现游戏循环,这意 ...

  4. [Unity3D]Unity3D游戏开发之回合制游戏原型的实现

    大家好,欢迎大家关注我的博客,我是秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 今天呢,我们来说说回合制.博主曾经坦言自己是一个喜欢国产RPG游戏的人,<仙剑奇侠传& ...

  5. 回合制游戏中的活动需要注意的

    回合制游戏中的活动 了解一个活动需要以下流程,下面分点阐述. 1.      活动的背景是什么? 游戏中的活动一定要有合理的背景剧情,而且这些背景剧情要和游戏的联系紧密,这样玩家在接触游戏的时候才不会 ...

  6. C语言模拟回合制游戏 源码

    源码下载地址: http://download.csdn.net/detail/monkey_uan/5115921 刚学C的作品,略带稚气,仅供参考学习,版权所有. #include<stdi ...

  7. 一个简单的Visual C++回合制游戏,完整源码展示

    Visual+C++编写的一个回合制游戏演示源码,源码编译环境为vs2010,希望能和大家一起交流,共同学习,共同进步.请注意,要运行生成的EXE文件,请先将EXE文件从Debug目录中拷出来,放到上 ...

  8. java rpg对战_[源码和文档分享]基于java的RPG回合制游戏

    一.工作积累总结 该项目是一个回合制RPG游戏,讲述了动物主角对抗人类,自逃出动物园开始,一路与人类对抗,提升能力,并寻找新队友组成团体,逼得人类不得不与之谈判,最终与人类达成了和平协议的故事.玩家可 ...

  9. python可以制作回合制游戏么_Python制作回合制手游外挂简单教程(上)

    正文 引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这 ...

最新文章

  1. 【我翻译的文章】你还需要数据层吗?
  2. 实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、(FactoryBean测试)★
  3. android 中intent跳转是灰色的,没有效果,显示intent = null
  4. 微服务框架Go-Micro集成Nacos实战之服务注册与发现
  5. 保证一个用户已选取的记录不被其他用户选取
  6. Linux之yum安装lamp环境
  7. lynda ux_举办UX午餐并学习并成为UX英雄
  8. kafka使用_Kafka精华问答 | kafka的使用场景是什么?
  9. “小程序”的最佳入口位置--关于微信小程序的思考笔记
  10. ArcGIS水文分析实战教程(7)细说流域提取
  11. android随机抽奖代码_随机抽奖生成器app下载|随机抽奖生成器软件下载_v1.0_9ht安卓下载...
  12. FileZilla Server + FlashFXP 快速傻瓜式搭建FTP服务
  13. 机器学习周志华(西瓜书)课后习题参考答案
  14. 生信:1:vcf格式文件解读
  15. mysql 给库赋权_mysql数据库赋权
  16. linux calloc
  17. LL(1)语法分析实验报告
  18. rn 滑动验证_rn-fetch-blob
  19. GXNNCTF 2018 We_ax WriteUp 第三届南宁市网络安全技术大赛
  20. Altium设置菜单之PCB编辑菜单

热门文章

  1. 移动互联网的发展趋势ios与android哪更有前景,移动互联网是什么?移动互联网现状,发展趋势及前景...
  2. 安卓开发mysql数据库_Android编程之数据库的创建方法详解
  3. oracle数据库的语言,oracle数据库语言类型
  4. mysql+8.0+新特性_MySQL 8.0备受瞩目的新特性大放送!
  5. 玩转 SpringBoot 2 快速整合 Servlet
  6. 带你入门SpringCloud 之 通过SpringCloud Bus 自动更新配置
  7. bottomTagFragment
  8. Springboot+Mysql健身房在线预约管理系统
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的学校教务查询系统
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的车库管理系统