Пример #1
0
	def get_card(self):
		print(self.name, "的摸牌阶段")
		if (self.max_hp - self.hp <= 1):
			for i in range(0, 2):
				self.has_card.append(cd.get_new_card())
		else:
			print("%s发动技能【再起】获得了:" % (self.name))
			for i in range(self.max_hp - self.hp):
				tmp = cd.get_new_card()
				tmp.show()
				if (tmp.type == 1):
					print(" %s回复1点体力" % (self.name), end="")
					self.hp += 1
				else:
					self.has_card.append(tmp)
				print()
Пример #2
0
	def __init__(self, name, hp, gender, country, skill=["杀","火杀","雷杀"]):
		self.name = name		#名称
		self.hp = hp			#体力
		self.max_hp = hp		#体力上限
		self.drink = 0			#有没有使用酒
		self.use_kill = 0		#使用了多少杀
		self.has_card = []		#手牌
		self.gender = gender
		# 武器,防具,+1,-1,宝物
		self.equip=[cd.Card(0,0,0,1)]
		for i in range(0,4):
			self.equip.append(cd.Card(0,0,0,0))
		self.judge = []
		self.get_in = [1,1,1,1,1,1]
		self.pos = 0
		self.seat = 0
		self.country = country
		self.dead = 0
		self.skill = skill
		self.on_card = []  #武将牌上的牌
		self.flip = 0      #是否翻面
		self.connect = 0		#是否横置
		self.attack_dis = 0		#是否有距离-1特性
		self.defence_dis = 0	#是否有距离+1特性
		self.auto = 0  # 是否为电脑

		self.chosen = [0]*120		#手牌是否被选中
		self.pl_chosen = [0]*120	#武将是否被选中
		self.using_limit = 0		#出牌阶段是否可以打出
		for i in range(4):
			self.has_card.append(cd.get_new_card())
		self.skill_init()
Пример #3
0
	def in_judge(self):
		#print(self.name, "的判定阶段")
		for i in range(0,len(self.judge)):
			if(self.need(18,self) != 0):
				continue
			item = self.judge[i]
			tmp = cd.get_new_card()
			print("%s判定结果:"%(cd.card_nm[item.id]),end=" ")
			tmp.show()
			print()
			if(item.id == 19):
				self.get_in[3]= (tmp.type == 1)
				if(self.get_in[3] == 0):
					print("%s错过了出牌阶段"%(self.name))
			elif(item.id == 20):
				self.get_in[2] = (tmp.type == 2)
				if (self.get_in[2] == 0):
					print("%s错过了摸牌阶段" % (self.name))
			elif(item.id == 21):
				if(tmp.type == 0 and tmp.num>1 and tmp.num<10):
					self.lost_hp(3,self)
				else:
					for i in range(self.pos,len(pl.player_in_game)):
						if(pl.player_in_game[i].dead == 0):
							self.judge.append(item)
							break
					for i in range(self.pos):
						if(pl.player_in_game[i].dead == 0):
							self.judge.append(item)
							break
		self.judge = []
Пример #4
0
    def __init__(self, situation=default_situation):
        """situation = (name, hp, gender, country)"""
        name, hp, gender, country = situation
        self.name = name  # 名称
        self.hp = hp  # 体力
        self.max_hp = hp  # 体力上限
        self.drink = 0  # 有没有使用酒
        self.use_kill = 0  # 使用了多少杀
        self.has_card = []  # 手牌
        self.gender = gender
        # 武器,防具,+1,-1,宝物
        self.equip = [cd.Card(0, 0, 0, 1)]
        for i in range(0, 4):
            self.equip.append(cd.Card(0, 0, 0, 0))
        self.judge = []
        self.get_in = [1, 1, 1, 1, 1, 1]
        self.pos = 0  #出牌顺序
        self.seat = 0  #显示的座次
        self.country = country
        self.dead = 0
        self.skill = ["杀", "火杀", "雷杀"]
        self.on_card = []  # 武将牌上的牌
        self.flip = 0  # 是否翻面
        self.connect = 0  #是否横置
        self.attack_dis = 0  # 是否有距离-1特性
        self.defence_dis = 0  # 是否有距离+1特性
        self.auto = 1  # 是否为电脑
        self.fire_col = 1000  #集火系数(死亡为0)

        for i in range(4):
            self.has_card.append(cd.get_new_card())
Пример #5
0
 def get_card(self):
     print(self.name, "的摸牌阶段")
     num = 2
     if (len(self.has_card) < self.max_hp + 2):
         print("%s发动技能【解锁】" % (self.name))
         for item in pl.player_in_game:
             y = item.pos
             if (self.pos == y or item.dead == 1):
                 continue
             tmp = cd.get_new_card()
             print("%s获得了" % (item.name), end="")
             tmp.show()
             print()
             pl.player_in_game[y].has_card.append(tmp)
             num += 1
     for i in range(0, num):
         self.has_card.append(cd.get_new_card())
Пример #6
0
 def get_card(self):
     print(self.name, "的摸牌阶段")
     num = 2
     if ((len(self.skill_name) >= 3)):
         print("%s发动技能【英姿】" % (self.name))
         num += 1
     for i in range(0, num):
         self.has_card.append(cd.get_new_card())
Пример #7
0
	def get_card(self):
		self.has_skill = 0
		print(self.name, "的摸牌阶段")
		if (self.max_hp > 2 * self.hp):
			print("%s发动了技能【厚颜】并摸了%d张牌" % (self.name, min(4, max(2, int(self.max_hp // self.hp)))))
			self.has_skill = min(4, max(2, int(self.max_hp // self.hp)))

		for i in range(0, min(4, max(2, int(self.max_hp // self.hp)))):
			self.has_card.append(cd.get_new_card())
Пример #8
0
 def end(self):
     if (self.skill_type == 1):
         print("%s发动技能%s获得了" % (self.name, self.skill_name[1]), end=" ")
         self.flip ^= 1
         self.hp = self.hp + 1
         tmp = cd.get_new_card()
         tmp.show()
         print()
         self.has_card.append(tmp)
Пример #9
0
	def judge_skill(self, now_card):
		print("%s发动了技能【失聪】" % (self.name))
		tmp = cd.get_new_card()
		now_card.show()
		print(" 判定结果为:", end=" ")
		tmp.show()
		print()
		if (now_card.type % 2 == tmp.type % 2):
			print("%s无效" % (cd.card_nm[now_card.id]))
			return 0
		return 1
Пример #10
0
 def used(self, now_card):
     if (now_card.id < 4):
         self.use_kill = 1
         self.drink = 0
     elif (now_card.id > 6 and now_card.id < 17 and self.skill_type == 2):
         print("%s发动技能%s获得了" % (self.name, self.skill_name[2]), end=" ")
         tmp = cd.get_new_card()
         tmp.show()
         print()
         self.has_card.append(tmp)
     return 1
Пример #11
0
 def get_card(self):
     print("%s发动技能【吟诵】" % (self.name))
     used = []
     while (len(used) < 4):
         tmp = cd.get_new_card()
         print("判定结果为:", end="")
         tmp.show()
         print()
         if (tmp.type in used):
             break
         used.append(tmp.type)
         self.has_card.append(tmp)
     can_aimed = 0
     for item in pl.player_in_game:
         if (item.dead == 1 or item.pos == self.pos):
             continue
         can_aimed += 1
     tot = min(len(used), can_aimed)
     print("%s可指定%d个目标" % (self.name, tot))
     for i in range(max(0, 2 - tot)):
         self.has_card.append(cd.get_new_card())
Пример #12
0
 def response(self, evt):
     if (evt[0] == 8):
         print(self.name, ":深表同情")
     if (evt[0] == 2):
         now_card = evt[3]
         if (evt[1].pos == self.pos or evt[2].pos == self.pos):
             if ((now_card.id in [1, 2, 3] and now_card.type % 2 == 1)
                     or now_card.id == 7):
                 print("%s发动技能【激昂】并获得了" % (self.name))
                 tmp = cd.get_new_card()
                 tmp.show()
                 print()
                 self.has_card.append(tmp)
Пример #13
0
	def need(self, need_id, user):
		op.delay(300)
		pl.cd_score[self.pos] += 0
		if (need_id == 4 and self.equip[1].id == 32 and user.equip[0].id != 25):
			print("%s使用了[%s]" % (self.name, cd.card_nm[self.equip[1].id]))
			tmp = cd.get_new_card()
			print("判定结果:", end=" ")
			tmp.show()
			print()
			if (tmp.type == 1 or tmp.type == 3):
				print("[%s]生效" % (cd.card_nm[self.equip[1].id]))
				tmp.id = 4
				return tmp
		if (need_id == 5):
			for i in range(0, len(self.has_card)):
				if (self.has_card[i].type % 2 == 1):
					tmp = self.has_card.pop(i)
					cd.throw_queue.append(tmp)
					st = cd.card_nm[need_id]
					print("%s发动了技能【急救】打出了%s" % (self.name, st))
					return tmp
			for i in range(len(self.equip)):
				item = self.equip[i]
				if (item.type % 2 == 1):
					tmp = item
					cd.throw_queue.append(tmp)
					self.equip[i] = cd.Card(0, 0, 0, i == 0)
					st = cd.card_nm[need_id]
					print("%s发动了技能【急救】打出了%s" % (self.name, st))
					return tmp
		for i in range(0, len(self.has_card)):
			if (self.has_card[i].id == need_id):
				if (need_id == 4):
					tmp = ["向后一躲,避开了这一招", "片刻之间已侧身避过", "忽的跳出,早避开这招"]
					st = tmp[random.randint(0, 2)]
					print("%s%s," % (self.name, st))
				elif (need_id == 18):
					st = "早就看出端倪,轻松化开"
					print("%s%s," % (self.name, st))
				elif (need_id in [1, 2, 3]):
					st = self.skill[need_id]
					print("%s接了一记“%s”" % (self.name, st))
				else:
					st = cd.card_nm[need_id]
					print("%s打出了%s" % (self.name, st))
				tmp = self.has_card.pop(i)
				cd.throw_queue.append(tmp)
				# op.play(self)
				return tmp
		pl.cd_score[self.pos] -= 0
		return 0
Пример #14
0
    def prepare(self):
        print(self.name, "的准备阶段")
        if (len(self.skill_name) < 3):
            if (self.hp == 1):
                print("%s发动技能【魂姿】减少1点体力上限并获得了技能【英魂】,【英姿】" % (self.name))
                self.skill_name = [("激昂", 1, 0), ("英魂", 1, 0), ("英姿", 1, 0)]
                self.skill_init()
                self.max_hp -= 1
                self.hp = min(self.hp, self.max_hp)

        if (len(self.skill_name) >= 3):
            num = self.max_hp - self.hp
            if (num < 1): return
            x = -1
            while (x == -1):
                op.choices_num = [0] * 120
                x = op.judge(("是否发动技能【英魂】?"), 360, 30, ["确定", "取消"], 400, 30,
                             0)
            if (x == 1): return
            x = -1
            self.pl_can_choose = 1
            while (x == -1 or sum(self.pl_chosen) < 1):
                op.choices_num = [0] * 120
                x = op.judge(
                    ("请选择一名其他角色发动【英魂】"), 360, 30,
                    ["摸%d弃1" % (num), "摸1弃%d" % (num)], 400, 30, 0)
            for i in range(len(pl.player_in_game)):
                item = pl.player_in_game[i]
                if (self.pl_chosen[i] != 0):
                    for _ in range(num * (1 - x)):
                        item.has_card.append(cd.get_new_card())
                    if (x == 0):
                        item.throw(1)
                    else:
                        maxn = len(item.has_card)
                        if (maxn >= num):
                            item.throw(num)
                        else:
                            item.throw(maxn)
                            for i in range(4, -1, -1):  #实在不够弃装备
                                if (maxn <= num): break
                                if (item.equip[i].id != 0):
                                    tmp = item.equip[i]
                                    cd.throw_queue.append(tmp)
                                    item.equip[i] = cd.Card(0, 0, 0, i == 0)
                                    maxn -= 1
                    break
Пример #15
0
    def response(self, evt):
        if (evt[0] == 8):
            print(self.name, ":深表同情")

        if (evt[0] == 4):
            if (evt[3].country == self.country):
                for i in range(evt[3].max_hp - evt[3].hp):
                    print("%s发动技能【分身】获得了" % (self.name))
                    tmp = cd.get_new_card()
                    tmp.show()
                    print()
                    self.has_card.append(tmp)
        if (evt[0] == 3):
            if (evt[1].pos == self.pos and evt[3].id in [1, 2, 3, 7]):
                if (len(self.has_card) > 0):
                    print("%s发动技能【天照】" % (self.name))
                    pl.player_in_game[evt[2].pos].lost_hp(1, self)
Пример #16
0
	def need(self, need_id, user):
		# print("需要",self.name,"出",cd.card_nm[need_id])
		op.delay(300)
		if (need_id == 4 and self.equip[1].id == 32 and user.equip[0].id != 25):
			print("%s使用了[%s]" % (self.name, cd.card_nm[self.equip[1].id]))
			tmp = cd.get_new_card()
			print("判定结果:", end=" ")
			tmp.show()
			print()
			if (tmp.type == 1 or tmp.type == 3):
				print("[%s]生效" % (cd.card_nm[self.equip[1].id]))
				tmp.id = 4
				return tmp
		if (need_id == 4):
			change = self.multi_need([1, 2, 3])
			if (change != 0):
				print("%s发动技能【龙胆】" % (self.name))
				if (len(user.has_card) > 0):
					print("%s发动技能【冲阵】并获得%s的一张手牌" % (self.name, user.name))
					tmp_card = user.has_card.pop(random.randint(0, len(user.has_card) - 1))
					self.has_card.append(tmp_card)
				return change
		for i in range(0, len(self.has_card)):
			if (self.has_card[i].id == need_id):
				if (need_id == 4):
					tmp = ["向后一躲,避开了这一招", "片刻之间已侧身避过", "忽的跳出,早避开这招"]
					st = tmp[random.randint(0, 2)]
					print("%s%s," % (self.name, st))
				elif (need_id == 18):
					st = "早就看出端倪,轻松化开"
					print("%s%s," % (self.name, st))
				elif (need_id in [1, 2, 3]):
					st = self.skill[need_id]
					print("%s接了一记“%s”" % (self.name, st))
				else:
					st = cd.card_nm[need_id]
					print("%s打出了%s" % (self.name, st))
				tmp = self.has_card.pop(i)
				cd.throw_queue.append(tmp)
				# op.play(self)
				return tmp
		return 0
Пример #17
0
 def get_card(self):
     print(self.name, "的摸牌阶段")
     print("%s发动技能【浩劫】" % (self.name))
     tot = 0
     for item in player_in_game:
         y = item.pos
         if (y == self.pos or item.dead == 1 or len(item.has_card) == 0):
             continue
         tmp = item.has_card
         random.shuffle(tmp)
         tmp_card = tmp[0]
         print("得到了%s的" % (item.name), end="")
         tmp_card.show()
         print()
         self.has_card.append(tmp_card)
         player_in_game[y].has_card.remove(tmp_card)
         tot += 1
     print("还可以摸%d张牌" % (2))
     for i in range(2):
         self.has_card.append(cd.get_new_card())
Пример #18
0
	def response(self, evt):
		if (evt[0] == 8):
			print(self.name, ":深表同情")
		if(evt[0] == 4):
			if(evt[3].country == self.country):
				x = -1
				while (x == -1):
					op.choices_num = [0] * 120
					x = op.judge(("是否发动技能【分身】获得%d张牌" % (evt[3].max_hp - evt[3].hp)), 360, 30, ["确定","取消"], 400, 30, 0)
				if(x == 0):
					for i in range(evt[3].max_hp - evt[3].hp):
						print("%s发动技能【分身】获得了" % (self.name))
						tmp = cd.get_new_card()
						tmp.show()
						print()
						self.has_card.append(tmp)
		if (evt[0] == 3):
			if (evt[1].pos == self.pos and evt[3].id in [1,2, 3,7,8]):
				if (len(self.has_card) > 0):
					print("%s发动技能【天照】" % (self.name))
					pl.player_in_game[evt[2].pos].lost_hp(1, self)
Пример #19
0
	def need(self,need_id,user):
		#print("需要",self.name,"出",cd.card_nm[need_id])
		op.delay(1000)
		if(need_id == 4 and self.equip[1].id == 32 and user.equip[0].id != 25):
			print("%s使用了[%s]" % (self.name, cd.card_nm[self.equip[1].id]))
			tmp = cd.get_new_card()
			print("判定结果:", end=" ")
			tmp.show()
			print()
			if(tmp.type == 1 or tmp.type == 3):
				print("[%s]生效"%(cd.card_nm[self.equip[1].id]))
				tmp.id = 4
				return tmp
		for i in range(0,len(self.has_card)):
			if(self.has_card[i].id == need_id):
				op.choices_num = [0] * 120
				x = op.judge(("是否响应%s打出【%s】?"%(user.name,cd.card_nm[need_id])),
						 380,30,["确定","取消"],420,30,0)
				if(x != 0):
					break
				if (need_id == 4):
					tmp = ["向后一躲,避开了这一招","片刻之间已侧身避过","忽的跳出,早避开这招"]
					st = tmp[random.randint(0,2)]
					print("%s%s," % (self.name, st))
				elif (need_id == 18):
					st = "早就看出端倪,轻松化开"
					print("%s%s," % (self.name, st))
				elif (need_id in [1, 2, 3]):
					st = self.skill[need_id]
					print("%s接了一记“%s”" % (self.name, st))
				else:
					st = cd.card_nm[need_id]
					print("%s打出了%s"%(self.name,st))
				tmp = self.has_card.pop(i)
				cd.throw_queue.append(tmp)
				#op.play(self)
				return tmp
		return 0
Пример #20
0
	def event(self):
		print(self.name, "的出牌阶段")
		for item in self.has_card:
			item.show()
			print()
		print()
		self.can_choose = 1
		self.pl_can_choose = 1
		self.using_limit = 1
		op.has_end,op.has_confirm,op.has_cancel = 0,0,0
		op.task_queue.clear()
		op.task_queue.append(op.Button("结束出牌",750,400,30,op.end_stage))
		op.task_queue.append(op.Button("确定", 460, 400, 30, op.confirm))
		op.task_queue.append(op.Button("取消", 590, 400, 30, op.cancel))
		while(op.has_end == 0 and len(self.has_card) != 0):
			if(self.now_card != 0):
				self.pl_can_choose = 1 + (self.now_card.id == 17)
			if(len(op.task_queue)<3):
				op.task_queue.append(op.Button("结束出牌", 750, 400, 30, op.end_stage))
				op.task_queue.append(op.Button("确定", 460, 400, 30, op.confirm))
				op.task_queue.append(op.Button("取消", 590, 400, 30, op.cancel))
			op.has_confirm = 0
			if (op.has_cancel == 1):
				op.has_cancel = 0
				self.chosen = [0] * 120
				self.pl_chosen = [0]*120
			if(sum(self.chosen) == 1):
				for i in range(len(self.chosen)):
					if(i >= len(self.has_card)):
						break
					if(self.chosen[i] != 0):
						self.now_card = self.has_card[i]
				tot = len(pl.player_in_game)
				can_choose_seat = [0]*120
				for item in pl.player_in_game:
					if(item.dead == 0 and cd.aim(self.now_card,self,item)):
						can_choose_seat[item.seat] = 1 + (item.auto==0)
				for i in range(1, tot + 1):
					tx = (i - (i> pl.gamer_pos)) * 1000 / tot
					ty = max(130, 0.001 * tx * tx - 1 * tx + 350)
					tx -= 60
					ty -= 80
					if (can_choose_seat[i - 1]==1):
						pygame.draw.rect(op.screen, [255, 0, 0], [tx - 1, ty - 1, 122, 162], 1)
					elif(can_choose_seat[i - 1]==2):
						pygame.draw.rect(op.screen, [255, 0, 0], [849, 439, 151, 161], 1)
				if(self.now_card == 0):
					continue
				if(op.has_confirm!= 0):
					if (sum(self.pl_chosen) != 0):
						self.has_card.remove(self.now_card)
						for i in range(tot):
							item = pl.player_in_game[i]
							if (self.pl_chosen[i] != 0):
								# cd.throw_queue.append(self.now_card)
								if (item.be_aimed(self.now_card, self) != 0):
									cd.use(self.now_card, self, item)
									self.used(self.now_card)
								else:
									print("无效~")
						self.pl_chosen = [0] * 120
						self.chosen = [0] * 120
						self.now_card = 0
					elif(self.now_card.id in [5,6,11,12,13,14,15,17] or self.now_card.id > 20):
						#cd.throw_queue.append(self.now_card)
						self.has_card.remove(self.now_card)
						if(self.now_card.id == 17):
							self.has_card.append(cd.get_new_card())
							print("%s重铸了"%(self.name))
							self.now_card.show()
							print()
						else:
							cd.use(self.now_card, self,self)
							self.used(self.now_card)
						self.pl_chosen = [0] * 120
						self.chosen = [0] * 120
						self.now_card = 0

					if(pl.game_over() == 1):break
		op.task_queue.clear()
		self.using_limit = 0
Пример #21
0
	def get_card(self):
		print(self.name, "的摸牌阶段")
		for i in range(0, 2):
			self.has_card.append(cd.get_new_card())
Пример #22
0
	def skill_0(self):
		print("%s发动技能【作弊】" % (self.name))
		self.has_card.append(cd.get_new_card())
		self.skill_name = [("分身",1,0),("天照",1,0)]
		self.skill_init()
Пример #23
0
 def get_card(self):
     print(self.name, "的摸牌阶段")
     if (self.hp < self.max_hp):
         print("%s发动技能【绝境】并摸了%d张牌" % (self.name, 2 + self.max_hp - self.hp))
     for i in range(0, 2 + self.max_hp - self.hp):
         self.has_card.append(cd.get_new_card())