在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python语言基础 → python game源码下载

python game源码下载

Python语言基础

下载此实例
  • 开发语言:Python
  • 实例大小:7.10KB
  • 下载次数:47
  • 浏览次数:681
  • 发布时间:2015-12-25
  • 实例类别:Python语言基础
  • 发 布 人:do827261756
  • 文件格式:.py
  • 所需积分:1
 相关标签: 1

实例介绍

【实例简介】人生苦短,我用python ,这游戏够短的。。。
【实例截图】

【核心代码】

#-*- 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()

标签: 1

实例下载地址

python game源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警