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 行,正文曾经齐全不论用了,本人基本看不懂本人的代码,须要筹备弃坑了。
总结一下,python 不是不能开发游戏,只是并不适合。每种语言都有各自的优缺点,开发游戏这一块或者就是 python 的毛病吧。
python 游戏实例补充:
发牌游戏
- 游戏介绍
四名牌手打牌,电脑随机將 52 张牌(不合大、小王)发给四名牌手,并在屏幕上显示每位牌手的牌。
- 面向对象程序设计
- 程序设计步骤
设计类,发牌程序设计出三个类: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 张牌,最初示四位牌手所有的牌。
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 card in 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 suit in Card.SUITS:
for rank in Card.RANKS:
self.add(Card(rank,suit))
def shuffle(self): #洗牌
import random
random.shuffle(self.cards) #打乱牌的程序
def deal(self,hands,per_hand=13):
for rounds in range(per_hand):
for hand in 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 hand in players:
print(“ 牌手 ”,n,end=”:”)
print(hand)
n=n+1
input(“\nPress the enter key to exit.”)
到此这篇对于 python 能开发游戏吗的文章就介绍到这了, 更多相干 python 能写游戏吗?心愿大家当前多多反对!