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能写游戏吗?心愿大家当前多多反对!