自建斗地主app

斗地主是一款非常受欢迎的扑克牌游戏,很多人都喜欢在电脑或手机上玩斗地主。如果你是一个程序员或者对编程有一定基础的朋友,那么你可以尝试自建一个斗地主APP。本文将介绍如何通过编程实现一个简单的斗地主游戏。

一、游戏规则

在开始编写斗地主APP之前,我们要先了解游戏规则。斗地主的牌数为54张,包含了大小王,其中3个2为地主牌,玩家手中的牌由系统随机分配,地主牌由系统确定。游戏过程分为抢地主和出牌两个阶段,抢地主结束后,地主首先出牌,其余玩家依次出牌。出牌规则为必须出比上一家牌型大的牌,没有比上一家牌大的牌型则需要不出。出完牌后,上一位出牌者可以在本回合任意时刻重新出牌。

二、编程实现

1.初始化

游戏开始前,我们需要先创建牌堆和玩家列表,同时将54张牌洗牌。

```

def init():

cards = ['2_♥','2_♠','2_♣','2_♦', 'A_♥','A_♠','A_♣','A_♦', 'K_♥','K_♠','K_♣','K_♦', 'Q_♥','Q_♠','Q_♣','Q_♦', 'J_♥','J_♠','J_♣','J_♦', '10_♥','10_♠','10_♣','10_♦', '9_♥','9_♠','9_♣','9_♦', '8_♥','8_♠','8_♣','8_♦', '7_♥','7_♠','7_♣','7_♦', '6_♥','6_♠','6_♣','6_♦', '5_♥','5_♠','5_♣','5_♦', '4_♥','4_♠','4_♣','4_♦', '3_♥','3_♠','3_♣','3_♦', 'joker','JOKER']

random.shuffle(cards)

players = {'player1':[], 'player2':[], 'player3':[]}

return cards, players

```

2.抢地主

我们需要编写一个函数,实现抢地主的过程。系统向每个玩家发一张牌,最后一张牌为地主牌,拥有该牌的玩家成为地主。如果没有玩家抢地主,则系统会重新给玩家发牌,直到有玩家抢地主。

```

def robLandlord(players):

cards, players = init()

last_card = cards.pop()

for p in players.keys():

players[p].append(cards.pop())

flag = False

curr_player = 'player3'

while not flag:

print(players[curr_player])

action = input('请选择(抢地主/不抢):')

if action == '抢地主':

players[curr_player].append(last_card)

flag = True

else:

players[curr_player].extend([cards.pop() for i in range(2)])

curr_player = getNextPlayer(curr_player)

return curr_player, players[curr_player]

```

3.牌型判断

在出牌过程中,我们需要实现对玩家出牌的牌型进行判断。可以先列出所有合法的牌型,然后通过编程逐一判断。

```

def getCardType(cards):

card_dic = {}

for card in cards:

if card.split('_')[0] not in card_dic:

card_dic[card.split('_')[0]] = 1

else:

card_dic[card.split('_')[0]] += 1

card_count = list(card_dic.values())

card_count.sort()

if len(cards)==1:

return 'single'

elif len(cards)==2 and card_count[0]==2:

return 'double'

elif len(cards)==3 and card_count[0]==3:

return 'triple'

elif len(cards)==4 and card_count[0]==4:

return 'bomb'

elif len(cards)==5 and card_count[0]==3 and card_count[1]==2:

return 'three_plus_two'

elif len(cards)==6 and card_count[0]==3 and card_count[1]==3:

return 'double_triple'

elif len(cards)==6 and card_count[0]==4 and card_count[1]==2:

return 'four_plus_two'

elif len(cards)==7 and card_count[0]==3 and card_count[1:]==[2,2]:

return 'three_plus_two_double'

elif len(cards)==8 and card_count[0]==4 and card_count[1:]==[2,2]:

return 'four_plus_two_double'

elif len(cards)==9 and card_count[0:3]==[3,3,3]:

return 'triple_straight'

elif len(cards)==10 and card_count[0:5]==[1,1,1,1,1] and isStraight(cards):

return 'straight'

elif len(cards)>=5 and isStraight(cards):

return 'straight'

else:

return 'invalid'

def isStraight(cards):

vals = []

for card in cards:

if card.split('_')[0] == 'A':

vals.append(14)

elif card.split('_')[0] == 'K':

vals.append(13)

elif card.split('_')[0] == 'Q':

vals.append(12)

elif card.split('_')[0] == 'J':

vals.append(11)

elif card.split('_')[0] == 'joker':

vals.append(15)

elif card.split('_')[0] == 'JOKER':

vals.append(16)

else:

vals.append(int(card.split('_')[0]))

vals.sort()

for i in range(len(vals)-1):

if vals[i+1]-vals[i]!=1:

return False

return True

```

4.出牌

在出牌过程中,我们需要判断出牌的合法性,如果非法则需要提醒玩家重新出牌。

```

def play(cards_prev, cards_curr):

if cards_curr == []:

return True, getCardType(cards_curr)

card_type_prev = getCardType(cards_prev)

card_type_curr = getCardType(cards_curr)

if card_type_curr == 'invalid':

return False, card_type_curr

elif card_type_curr == 'bomb':

if card_type_prev != 'bomb':

return True, card_type_curr

else:

if int(cards_curr[0].split('_')[0]) > int(cards_prev[0].split('_')[0]):

return True, card_type_curr

else:

return False, card_type_curr

elif card_type_curr == 'joker_bomb':

return True, card_type_curr

elif card_type_curr == card_type_prev:

if card_type_curr in ['single', 'double', 'triple']:

if int(cards_curr[0].split('_')[0]) > int(cards_prev[0].split('_')[0]):

return True, card_type_curr

else:

return False, card_type_curr

elif card_type_curr in ['three_plus_two', 'three_plus_two_double']:

if int(cards_curr[2].split('_')[0]) > int(cards_prev[2].split('_')[0]):

return True, card_type_curr

else:

return False, card_type_curr

else:

if int(cards_curr[0].split('_')[0]) > int(cards_prev[0].split('_')[0]):

return True, card_type_curr

else:

return False, card_type_curr

elif card_type_curr == 'rocket':

return True, card_type_curr

elif card_type_curr == 'joker':

return False, card_type_curr

else:

return False, card_type_curr

```

这样,我们就完成了一个简单的斗地主游戏的编程实现。接下来可以通过加入更多的特性和优化代码来完善这个游戏。


相关知识:
自助式app制作平台
自助式app制作平台是指一种能够让用户自主设计、开发和发布移动应用程序的技术工具。这种平台无需用户有编程技能或专业知识,只要遵循提供的步骤和指导,就能轻松地自己制作一款应用程序。自助式app制作平台的原理是将app模板、设计、开发和发布整合在一起进行。它提
2023-06-05
自己做考试题目的app
现代社会,考试已经成为了每个人不可避免的事情,相信很多人也会为了考试而找各种各样的试题,那么,如果自己做一个考试题目的App,也许会很受欢迎。下面我将介绍自己做考试题目的App的原理和详细步骤。一、原理做考试题目的App的原理其实并不复杂,移动App主要起
2023-06-05
自己做app软件步骤
App软件的开发可以分为以下几个步骤:1.确定需求任何一款软件的开发都必须要明确需要实现哪些功能,这个过程一般由产品或PM来完成,需要收集用户反馈,分析市场需求。明确需求对后续开发和调试过程都非常重要。2.设计界面设计界面是程序员之外其他人员的工作,设计人
2023-06-05
自己开发淘客app好干吗
随着移动互联网的迅猛发展,淘宝等电商平台的崛起,淘客成为了不少人的副业或者主业。淘客就是通过推广淘宝等电商平台的商品,获得佣金分成的一种模式。如果你有开发淘客APP的想法,下面我将从原理和详细介绍两个方面来解释这个想法的好处。一、原理开发淘客APP的基本原
2023-06-05
自己编程制作app软件
制作App软件的原理十分简单,只要具备一定的编程能力和相关知识,就可以完成自己的App设计。这里我们介绍一下如何编程制作一个简单的App。首先,需要明确自己的App需求,了解用户需求和市场需求。然后根据需求选择开发平台和编程语言,在不同的平台和语言下制作A
2023-06-05
一键制作自己的app软件
现今,手机已经成为了大部分人日常生活不可缺少的工具,各种各样的app软件也是我们生活中必备的辅助工具,丰富了我们的生活。有些人或企业可能由于种种原因想要开发自己的app软件,但是却不知道从何着手。本文将为大家介绍一种简单易懂的一键制作app的方法。自动应用
2023-06-05
手机app开发自学教程
随着智能手机的普及,手机应用已经成为了人们生活中不可或缺的一部分。因此,掌握手机应用开发技能也成为越来越多人的追求。在这篇文章中,我们将会介绍手机App开发的原理和自学教程。一、手机App开发的原理1. 操作系统首先,我们需要了解手机操作系统的基础知识,因
2023-05-31
手机自己制作题库app
要自己制作一个题库App,首先需要了解一些基本的原理和技术,具体步骤如下:1. 设计数据结构要制作一个题库App,就必须有一定的数据结构来存储试题和答案。可以考虑使用布尔数组、List、Dictionary等较常见的数据结构来存储题目和答案。2. 开发Ap
2023-05-31
手机自动滑屏app制作教程
手机自动滑屏app是一种帮助用户自动刷屏并模拟用户手指操作的应用程序。这样的应用程序对那些需要长时间触屏的应用非常有用,比如玩游戏时需要快速升级等。下面是手机自动滑屏app的制作教程。1. 确认需求:首先,需要确定你要开发的应用程序的需求。这个应用程序是用
2023-05-31
如何自己制作智慧社区app
智慧社区app是一个针对社区居民服务的app,通过app,社区居民可以进行团购、物业缴费、便民服务和社区活动等多项功能,方便了居民的日常生活,提高了社区服务水平和居民的生活体验。本文将介绍制作智慧社区app的原理和步骤。一、原理制作智慧社区app的原理主要
2023-05-30
上海自考做真题的app
随着自考越来越流行,越来越多的人选择自考来提高自己的学历水平。但是,自考复习不同于传统的考试复习,需要掌握一定的考试技巧和方法。而自考真题则是帮助考生熟悉考试形式,了解考试难度和方向的重要资料。因此,上海自考做真题的app应运而生,为考生提供了一种全新的自
2023-05-30
可以自己做app的网站
现如今,手机已经成为人们必不可少的生活工具,大量的手机应用程序(App)在市场上面流行,丰富的功能可以满足人们各种生活需求。在这样一个信息爆炸的时代,难免会有一些人想要有自己的应用程序。如果有一些好的创意,可以通过建立自己的应用程序来实现商业价值。本文将介
2023-05-30
©2015-2021 自建app开发平台 www.appbyme.cn 蜀ICP备17005078号-1