python可以写游戏,但不适合。下面我们来分析一下具体原因。

用锤子能造汽车吗? 谁也没法说不能吧?历史上也确实曾经有些汽车,是用锤子造出来的。但一般来说,还是用工业机器人更合适对吗?

比较大型的,使用Python的游戏有两个,一个是《EVE》,还有一个是《文明》。但这仅仅是个例,没有广泛意义。

一般来说,用来做游戏的语言,有两种。一是C++。。一是C#。。

Python理论上,不仅不适合做游戏,而是只要大型的程序,都不适合。只适合写比较小型的东西,比如一个计算器,一个爬虫等。

主要有2个方面,一是速度慢,二是语法缺陷。

也许你一定觉得,Python的语法又干净,又优雅,怎么还有缺陷?但仔细想想,为什么别的语言没有这么干净?没有这么优雅?明明可以直接a=123 干嘛非要写成 int a=123;呢?难道是其他语言的设计者,都有强迫症吗?道理很简单,有得必有失。

如果数据类型,只有字符串和数字,省略掉声明变量的过程,当然不是问题。但只要逻辑一复杂,情况就完全不同了。。。游戏中,你用C#或C++写起来,大概会是这样。

?

1

2

3

4

5

技能 a=xxxx;

武器 b=xxxx;

角色 c=xxxx;

药水 d=xxxx;

音乐 e=xxxx;

而Python呢?大概是这个样子

?

1

2

3

4

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行,注释已经完全不管用了,自己根本看不懂自己的代码,需要准备弃坑了。

总结一下,python不是不能开发游戏,只是并不合适。每种语言都有各自的优缺点,开发游戏这一块或许就是python的缺点吧。

python游戏实例补充:

发牌游戏

1. 游戏介绍

四名牌手打牌,电脑随机將52张牌(不合大、小王)发给四名牌手,并在屏幕上显示每位牌手的牌。

2. 面向对象程序设计

3. 程序设计步骤

设计类,发牌程序设计出三个类: Card类、Hand类和Poke类。

Card类:Card类代表一张牌,其中,FaceNum字段指的是牌面数字1~13,Suit字段指的是花色,”梅”为梅花,”方”为方块,”红”为红桃,”黑”为黑桃。

Hand类:Hand类代表手牌(一个玩家手里拿的牌),可以认为是一位牌手手里的牌,其中,cards列表变量存储牌手手中的牌。可以增加牌、清空手里的牌、把一张牌给别的牌手等操作。

Poke类:Poke类代表一副牌,我们可以将一副牌看作是有52张牌的牌手,所以继承Hand类。由于其中cards列表变量要存储52张牌,而且要进行发牌、洗牌操作,所以增加如下的方法。

主程序:主程序比较简单,因为有四个牌手,所以生成players列表存储初始化的四位牌手。生成一副牌的对象实例poke1,调用populate()方法生成有52张牌的一副牌,调用huffle()方法洗牌打乱顺序,调用deal(players,13)方法分别给每位玩家发13张牌,最后示四位牌手所有的牌。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

class Card():

""" A playing card. """

RANKS=["A","2","3","4","5","6","7","8","9","10","J","Q","K"]#牌面数字1-13

SUITS=["梅","方","红","黑"]

#梅为梅花,方为方钻,红为红心,黑为黑桃

def __init__(self,rank,suit,face_up=True):

self.rank=rank#指的是牌面数字1-13

self.suit=suit#suit指的是花色

self.is_face_up=face_up#是否显示牌正面,True为正面,False为牌背面

def __str__(self):#print()

if self.is_face_up:

rep=self.suit+self.rank#+" "+str(self.pic_order())

else:

rep="XX"

return rep

def flip(self):#翻牌方法

self.is_face_up=not self.is_face_up

def pic_order(self):#牌的顺序号

if self.rank=="A":

FaceNum=1

elif self.rank=="J":

FaceNum=11

elif self.rank=="Q":

FaceNum=12

elif self.rank=="K":

FaceNum=13

else:

FaceNum=int(self.rank)

if self.suit=="梅":

Suit=1

elif self.suit=="方":

Suit=2

elif self.suit=="红":

Suit=3

else:

Suit=4

return (Suit-1)*13+FaceNum

class Hand( ):

""" A hand of playing cards. """

def __init__(self):

self.cards=[]

def __str__(self):

if self.cards:

rep=""

for cardin self.cards:

rep+=str(card)+"\t"

else:

rep="无牌"

return rep

def clear(self):

self.cards=[]

def add(self,card):

self.cards.append(card)

def give(self,card,other_hand):

self.cards.remove(card)

other_hand.add(card)

class Poke(Hand):

""" A deck of playing cards. """

def populate(self):#生成一副牌

for suitin Card.SUITS:

for rankin Card.RANKS:

self.add(Card(rank,suit))

def shuffle(self):#洗牌

import random

random.shuffle(self.cards)#打乱牌的顺序

def deal(self,hands,per_hand=13):

for roundsin range(per_hand):

for handin hands:

top_card=self.cards[0]

self.cards.remove(top_card)

hand.add(top_card)

if __name__=="__main__":

print("This is a module with classed for playing cards.")

#四个玩家

players=[Hand(),Hand(),Hand(),Hand()]

poke1=Poke()

poke1.populate()#生成一副牌

poke1.shuffle()#洗牌

poke1.deal(players,13)#发给玩家每人13张

#显示四位牌手的牌

n=1

for handin players:

print("牌手",n,end=":")

print(hand)

n=n+1

input("\nPress the enter key to exit.")

到此这篇关于python能开发游戏吗的文章就介绍到这了,更多相关python能写游戏吗内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.py.cn/faq/python/11726.html

python如何开发游戏脚本_python能开发游戏吗相关推荐

  1. python能不能开发游戏脚本_Python脚本如何保证游戏正常开发

    Python脚本如何保证游戏正常开发 Python脚本是一种广泛应用于玩游戏开发的通信语言,在实际应用的过程中还是有不少的问题困扰着开发人员,下面是Python脚本在实际应用中的具体问题解决方案.希望 ...

  2. python适合开发游戏吗_python能开发游戏吗

    python可以写游戏,但不适合.下面我们来分析一下具体原因. 用锤子能造汽车吗? 谁也没法说不能吧?历史上也确实曾经有些汽车,是用锤子造出来的.但一般来说,还是用工业机器人更合适对吗? 比较大型的, ...

  3. python能制作游戏吗_python怎么制作游戏脚本

    本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对完成游戏脚本. 浏览器打开游戏窗口(单个一个窗口),游戏主要界面截图需要两个坐标(左上角 ...

  4. python web 开发教程下载_Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

  5. python后端开发技术论坛_python后端开发

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python软件开发,php软件开发,后端开发,运维自动化系统开发,堡垒机,云管 ...

  6. python可以用来开发前端吗_python能开发前端吗

    Python可以开发前端. python是可以开发网页的,比如Django和Flask等基于Python的Web框架最近在Web开发中非常流行.这些Web框架可以帮助你用Python编写服务器端代码( ...

  7. python能做什么脚本_Python能做什么

    Python 作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐.那么,Python 的应用领域有哪些呢? 概括起来,Python 的应用领域主要有如下几个. Web应用开发 Python ...

  8. python打地鼠游戏教程_Python入门小游戏,炫酷打地鼠教程第二部分,都是干货

    还记得那位玩打地鼠小游戏,然后学会python的女白领吗? 那份教程还没有写完,只写到了对游戏中精灵的定义,然后我们继续写. 实现了游戏精灵的定义后,我们就要开始展现真正的技术啦,也就是写主程序. 首 ...

  9. python猜数游戏流程_Python 猜数字游戏

    游戏内容:猜数字游戏 游戏过程描述 程序运行起来,随机在某个范围内选择一个整数. 提示用户输入数字,也就是猜程序随即选的那个数字. 程序将用户输入的数字与自己选定的对比,一样则用户完成游戏,否则继续猜 ...

最新文章

  1. js url参数的获取和设置以及删除
  2. Linux无法联网怎么办?解析VMware上的CentOS7(Linux)系统无法联网的解决办法
  3. 使用dwz框架搭建网站后台
  4. 从零开始数据科学与机器学习算法-数据预处理与基准模型-01
  5. 初探Java设计模式1:创建型模式(工厂,单例等)
  6. 在页游中LUA的应用(1)
  7. javascript expando
  8. mysql dba环境验收_面对一个全新的环境,作为一个Mysql DBA,应该了解
  9. 【2019.09.01】2019南京网络赛
  10. [删括号][判断可行性的dp]
  11. nginx IP 443 路由到其它地址
  12. 前端jquery学习
  13. 阶段3 3.SpringMVC·_05.文件上传_3 文件上传之Springmvc方式上传原理分析
  14. 如果计算机正执行屏幕保护程序 当用户,计算机一级考试参考试题(含答案)篇篇一.doc...
  15. 联想电脑尺寸在哪里看_笔记本型号在哪里看 怎么看笔记本屏幕大小
  16. Linux: 李纳斯·托沃兹(Linus Torvalds): “使用KDE”(转)
  17. ~_~ 搬家啰 ~_~
  18. 磁盘类型和相关术语学习笔记
  19. 从业多年数据分析师的亲身经验!
  20. LeetCode 复数乘法

热门文章

  1. emoji:意外成功的人造语言
  2. 从AI到“连环计”:华为手机攻克苹果的战役始末
  3. 基于SpringBoot+微信小程序的失物招领小程序
  4. waspcn matlab,再次完善了 WASPCN for Matlab
  5. MongoDB按条件查找并求和
  6. win10 系统电脑开启 热点(电脑需连接网络)
  7. 图片与十六进制之间的相互转换
  8. matlab中吃蛋问题,张文宏再次强调要多吃鸡蛋,减脂期怎么吃鸡蛋热量最低,看看吧!...
  9. 中富金石收费29800值得信赖吗?投资者的优质学习渠道
  10. html中怎么在新窗口打开文件夹,如何解决文件夹总是在新窗口打开 三种办法解决文件夹总是在新窗口打开...