python斗地主游戏源码(python斗地主代码)
今天给各位分享python斗地主游戏源码的知识,其中也会对python斗地主代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、四人斗地主作弊方法
- 2、用python能制作游戏吗
- 3、简易c++斗地主源码,简单的斗地主不需要ui,只要能发牌,随机决定地主,把牌按大小顺序排列
- 4、python能做什么游戏
- 5、用python做斗地主,大家都有什么好一点的设计方案呢?越详细越好,拜托了
四人斗地主作弊方法
四人斗地主无法作弊。四个人斗地主游戏,在游戏中系统是有防作弊功能的,在游戏中无法对话,只能凭借自己的实力赢取比赛。
用python能制作游戏吗
能,但不适合。
用锤子能造汽车吗? 谁也没法说不能吧?历史上也确实曾经有些汽车,是用锤子造出来的。但一般来说,还是用工业机器人更合适对吗?
比较大型的,使用Python的游戏有两个,一个是《EVE》,还有一个是《文明》。但这仅仅是个例,没有广泛意义。
一般来说,用来做游戏的语言,有两种。一是C++。。一是C#。。
Python理论上,不仅不适合做游戏,而是只要大型的程序,都不适合。只适合写比较小型的东西,比如一个计算器,一个爬虫等。
主要有2个方面,一是速度慢,二是语法缺陷。
也许你一定觉得,Python的语法又干净,又优雅,怎么还有缺陷?但仔细想想,为什么别的语言没有这么干净?没有这么优雅?明明可以直接a=123 干嘛非要写成 int a=123;呢?难道是其他语言的设计者,都有强迫症吗?道理很简单,有得必有失。
如果数据类型,只有字符串和数字,省略掉声明变量的过程,当然不是问题。但只要逻辑一复杂,情况就完全不同了。。。游戏中,你用C#或C++写起来,大概会是这样。
技能 a=xxxx;
武器 b=xxxx;
角色 c=xxxx;
药水 d=xxxx;
音乐 e=xxxx;
而Python呢?大概是这个样子
a=xxxx
b=xxxx
c=xxxx
d=xxxx
如果你的代码很少,显然是Python比较方便。但如果你创建几百个对象,代码超过1万行。。。写到几千行的时候,遇到一个叫x的对象,你还知道它到底是个啥吗?是一把武器?还是一瓶药水?还是一张图片?一段音频?一盏灯光?一座房子?
不要以为1万行代码很多。。。。1万行连个《斗地主》都写不完。。
用Python写大程序的感觉就是,当你第一天,只写了50行代码,创建了3个类,5个对象。你会觉得太爽了,这绝对是世界上最好的语言。。。第二天,你又创建了2个类,5个对象的时候,就觉得有点晕晕的了。第三天,又创建了2个类之后,你会发现自己必须非常仔细的看一遍注释,否则就不会写了。第四天,你一整天都在看注释。。。。
这就是动态语言的劣根性。一开始代码量少,看不出任何缺点,各种省事,各种爽。代码量越多,脑子越乱。一般500行以上,效率就会被JAVA,C#之类的语言反超。。1000行,就必须要各种加注释才能看懂了。。2000行,注释比代码还多了。。5000行,注释已经完全不管用了,自己根本看不懂自己的代码,需要准备弃坑了。
简易c++斗地主源码,简单的斗地主不需要ui,只要能发牌,随机决定地主,把牌按大小顺序排列
#include time.h
#include iostream
#include string
#include vector
enum em_CardClass_t
{
_CC_hearts = 0, // 红桃
_CC_Spade, // 黑桃
_CC_Clubs, // 梅花
_CC_Diamonds, // 方块
_CC_King // 大小王
};
struct st_Card_t
{
em_CardClass_t _emCardClass;
UINT _uCardIndex; // _emCardClass为_CC_King时,有效取值[1,2]
// _emCardClass非_CC_King时,有效取值[1,13]
};
using namespace std;
void InitCard(vectorst_Card_t vtCard)
{
st_Card_t card;
for( UINT i=0; i_CC_King; i++ )
{
card._emCardClass = (em_CardClass_t)i;
for( UINT j=1; j14; j++ )
{
card._uCardIndex = j;
vtCard.push_back(card);
}
}
card._emCardClass = _CC_King;
card._uCardIndex = 1;
vtCard.push_back(card);
card._uCardIndex = 2;
vtCard.push_back(card);
}
// 分牌
void DealCard(vectorst_Card_t vtCard, vectorst_Card_t vtPlayer1,
vectorst_Card_t vtPlayer2, vectorst_Card_t vtPlayer3)
{
srand( (unsigned)time( NULL ) );
for( int i = 0; i 51; i++ )
{
int iCard = rand() % vtCard.size();
switch( i % 3 )
{
case 0:
vtPlayer1.push_back(vtCard[iCard]);
break;
case 1:
vtPlayer2.push_back(vtCard[iCard]);
break;
default:
vtPlayer3.push_back(vtCard[iCard]);
break;
}
if( iCard != vtCard.size()-1 )
{
vtCard[iCard] = vtCard[vtCard.size()-1];
}
vtCard.pop_back();
}
}
// 叫牌
int Bid(vectorst_Card_t vtCard, vectorst_Card_t vtPlayer1,
vectorst_Card_t vtPlayer2, vectorst_Card_t vtPlayer3)
{
srand( (unsigned)time( NULL ) );
int iBider = rand() % 3; // 叫牌者,也就是地主
vectorst_Card_t* pPlayer = NULL;
switch( iBider )
{
case 0:
pPlayer = vtPlayer1;
break;
case 1:
pPlayer = vtPlayer2;
break;
default:
pPlayer = vtPlayer3;
break;
}
for( UINT i = 0; i vtCard.size(); i++ )
{
pPlayer-push_back(vtCard[i]);
}
return iBider;
}
// 整牌(按红桃、黑桃、梅花、方块、小大王的花色顺序整理,同一花色再按从小到大的顺序整理)
void SortCard(vectorst_Card_t vtPlayer)
{
st_Card_t tmp;
for( UINT i=0; ivtPlayer.size()-1; i++ )
{
for( UINT j=i+1; jvtPlayer.size(); j++ )
{
if( vtPlayer[i]._emCardClass vtPlayer[j]._emCardClass )
{
continue;
}
if( vtPlayer[i]._emCardClass == vtPlayer[j]._emCardClass
vtPlayer[i]._uCardIndex vtPlayer[j]._uCardIndex )
{
continue;
}
tmp = vtPlayer[i];
vtPlayer[i] = vtPlayer[j];
vtPlayer[j] = tmp;
}
}
}
void PrintPlayerCard(const string sPlayerName,
const vectorst_Card_t vtPlayer)
{
cout sPlayerName " cards:" endl;
for( UINT i=0; i vtPlayer.size(); i++ )
{
switch( vtPlayer[i]._emCardClass )
{
case _CC_hearts:
cout "红桃";
break;
case _CC_Spade:
cout "黑桃";
break;
case _CC_Clubs:
cout "梅花";
break;
case _CC_Diamonds:
cout "方块";
break;
default:
cout "King";
break;
}
cout vtPlayer[i]._uCardIndex " ";
}
cout endl endl;
}
void main()
{
vectorst_Card_t vtCard;
vectorst_Card_t vtPlayer1;
vectorst_Card_t vtPlayer2;
vectorst_Card_t vtPlayer3;
InitCard(vtCard);
DealCard(vtCard, vtPlayer1, vtPlayer2, vtPlayer3);
int iBider = Bid(vtCard, vtPlayer1, vtPlayer2, vtPlayer3);
SortCard(vtPlayer1);
SortCard(vtPlayer2);
SortCard(vtPlayer3);
PrintPlayerCard("Player1", vtPlayer1);
PrintPlayerCard("Player2", vtPlayer2);
PrintPlayerCard("Player3", vtPlayer3);
cout "地主是Player" iBider+1 endl endl;
}
python能做什么游戏
Python是一门高级且有趣的编程语言,除了网络爬虫、人工智能、数据分析之外,Python还可以进行游戏开发,为大家介绍五个支持Python的2D、3D游戏开发库。
1、Cocos2d:是一系列开源软件框架,用于构建跨平台2D游戏和应用程序,由cocos2d-x、cocos2d-js、cocos2d-xna和cocos2d多种框架组成,像大鱼赌场、城堡冲突等小游戏,就是用此框架开发出来的。
2、Panda3D:是由迪士尼开发的3D游戏引擎,一个用于Python和C++程序的3D渲染和游戏开发框架,并由卡内基梅陇娱乐技术中心负责维护,使用C++编写的,针对Python进行了完全的封装。
3、Pygame:它是一组Python模块,用来编写游戏,可支持Python3.7,游戏例子有:纸牌游戏、超级马里奥、击球等多种游戏。
4、Pyogre:ogre 3D渲染引擎的Python绑定,可以用来开发游戏和仿真程序等任何3D应用,它的API更加稳定,也非常快速灵活。
5、RenPy:一个视觉小说引擎,被世界各地的成千万的创造者所使用,它可以帮助你使用文字、图像和声音来讲述电脑和移动设备上的故事。RenPy是开放源码的,可免费的商业用途,易于学习的脚本语言任何人都能有效地编写大型视觉小说,它的Python脚本足以用来模拟游戏。
用python做斗地主,大家都有什么好一点的设计方案呢?越详细越好,拜托了
如果只是自己练习着玩。你随便写一写吧。 如果是想做成一个真正的游戏。一个产品。就首先理清楚需求。
你这个软件谁用的。怎么赚钱,要满足用户的哪些需求。再根据这些需求建立一个开发方案。
我只能猜猜,你这个软件是局域内学生用,联网玩的。因为你们不能上互联网。所以只能局域网玩。我记得微软的几个牌类游戏是可以联网玩的。你自己检查一下看。开源的也有类似的程序。
如果一定要自己写这就需要分客户端与服务端。服务端可以不用开发。这种简单游戏,直接用一个数据库当服务端好了。或者是一个memcache或者是一个key value的非关系型数据库。总之不用认证,不用加密。
下面就是客户端开发。网络部分不说。那就只剩下界面与扑克的算法。界面也不用说什么,做一个Canvas,然后绘制,这样效果最好,但是复杂了。直接用一个Image控件来玩,相对非常简单。动态创建与删除控件。绑定控件的消息就成了。
至于扑克算法及数据结构。这个好象没有太多难度。会打牌的人都可以做。记录打牌的所有牌的状态,每个玩家的状态,以及按次序发牌,判断胜负就可以了。
关于python斗地主游戏源码和python斗地主代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。