一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python能開發(fā)游戲嗎

python能開發(fā)游戲嗎

2020-06-12 10:49silencement Python

在本篇文章里小編給大家整理的是關(guān)于python進(jìn)行游戲開發(fā)的相關(guān)知識點(diǎn),需要的朋友們參考學(xué)習(xí)下。

python可以寫游戲,但不適合。下面我們來分析一下具體原因。

用錘子能造汽車嗎? 誰也沒法說不能吧?歷史上也確實(shí)曾經(jīng)有些汽車,是用錘子造出來的。但一般來說,還是用工業(yè)機(jī)器人更合適對嗎?

比較大型的,使用Python的游戲有兩個,一個是《EVE》,還有一個是《文明》。但這僅僅是個例,沒有廣泛意義。
一般來說,用來做游戲的語言,有兩種。一是C++。。一是C#。。

Python理論上,不僅不適合做游戲,而是只要大型的程序,都不適合。只適合寫比較小型的東西,比如一個計(jì)算器,一個爬蟲等。

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

也許你一定覺得,Python的語法又干凈,又優(yōu)雅,怎么還有缺陷?但仔細(xì)想想,為什么別的語言沒有這么干凈?沒有這么優(yōu)雅?明明可以直接a=123 干嘛非要寫成 int a=123;呢?難道是其他語言的設(shè)計(jì)者,都有強(qiáng)迫癥嗎?道理很簡單,有得必有失。
如果數(shù)據(jù)類型,只有字符串和數(shù)字,省略掉聲明變量的過程,當(dāng)然不是問題。但只要邏輯一復(fù)雜,情況就完全不同了。。。游戲中,你用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比較方便。但如果你創(chuàng)建幾百個對象,代碼超過1萬行。。。寫到幾千行的時候,遇到一個叫x的對象,你還知道它到底是個啥嗎?是一把武器?還是一瓶藥水?還是一張圖片?一段音頻?一盞燈光?一座房子?
不要以為1萬行代碼很多。。。。1萬行連個《斗地主》都寫不完。。

用Python寫大程序的感覺就是,當(dāng)你第一天,只寫了50行代碼,創(chuàng)建了3個類,5個對象。你會覺得太爽了,這絕對是世界上最好的語言。。。第二天,你又創(chuàng)建了2個類,5個對象的時候,就覺得有點(diǎn)暈暈的了。第三天,又創(chuàng)建了2個類之后,你會發(fā)現(xiàn)自己必須非常仔細(xì)的看一遍注釋,否則就不會寫了。第四天,你一整天都在看注釋。。。。

這就是動態(tài)語言的劣根性。一開始代碼量少,看不出任何缺點(diǎn),各種省事,各種爽。代碼量越多,腦子越亂。一般500行以上,效率就會被JAVA,C#之類的語言反超。。1000行,就必須要各種加注釋才能看懂了。。2000行,注釋就比代碼多了。。5000行,注釋已經(jīng)完全不管用了,自己根本看不懂自己的代碼,需要準(zhǔn)備棄坑了。

總結(jié)一下,python不是不能開發(fā)游戲,只是并不合適。每種語言都有各自的優(yōu)缺點(diǎn),開發(fā)游戲這一塊或許就是python的缺點(diǎn)吧。

python游戲?qū)嵗a(bǔ)充:

發(fā)牌游戲

1. 游戲介紹

四名牌手打牌,電腦隨機(jī)將52張牌(不合大、小王)發(fā)給四名牌手,并在屏幕上顯示每位牌手的牌。

2. 面向?qū)ο蟪绦蛟O(shè)計(jì)

3. 程序設(shè)計(jì)步驟

設(shè)計(jì)類,發(fā)牌程序設(shè)計(jì)出三個類: Card類、Hand類和Poke類。

Card類:Card類代表一張牌,其中,F(xiàn)aceNum字段指的是牌面數(shù)字1~13,Suit字段指的是花色,”梅”為梅花,”方”為方塊,”紅”為紅桃,”黑”為黑桃。

Hand類:Hand類代表手牌(一個玩家手里拿的牌),可以認(rèn)為是一位牌手手里的牌,其中,cards列表變量存儲牌手手中的牌??梢栽黾优?、清空手里的牌、把一張牌給別的牌手等操作。

Poke類:Poke類代表一副牌,我們可以將一副牌看作是有52張牌的牌手,所以繼承Hand類。由于其中cards列表變量要存儲52張牌,而且要進(jìn)行發(fā)牌、洗牌操作,所以增加如下的方法。

主程序:主程序比較簡單,因?yàn)橛兴膫€牌手,所以生成players列表存儲初始化的四位牌手。生成一副牌的對象實(shí)例poke1,調(diào)用populate()方法生成有52張牌的一副牌,調(diào)用huffle()方法洗牌打亂順序,調(diào)用deal(players,13)方法分別給每位玩家發(fā)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"] #牌面數(shù)字1-13
 SUITS=["梅","方","紅","黑"]
#梅為梅花,方為方鉆,紅為紅心,黑為黑桃
 
 def __init__(self,rank,suit,face_up=True):
  self.rank=rank    #指的是牌面數(shù)字1-13
  self.suit=suit    #suit指的是花色
  self.is_face_up=face_up #是否顯示牌正面,True為正面,F(xiàn)alse為牌背面
 
 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#發(fā)給玩家每人13張
 #顯示四位牌手的牌
 n=1
 for hand in players:
  print("牌手",n,end=":")
  print(hand)
  n=n+1
 input("\nPress the enter key to exit.")

到此這篇關(guān)于python能開發(fā)游戲嗎的文章就介紹到這了,更多相關(guān)python能寫游戲嗎內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产福利在线 | 亚洲精品一区二区三区在线看 | 99热成人精品热久久669 | 消息称老熟妇乱视频一区二区 | 99久久国产亚洲综合精品 | 国产在线伊人 | 欧美kkk4444在线观看 | 羞羞私人影院可以直接免费观影吗 | 1769最新资源站 | 日韩一区视频在线 | 暖暖在线精品日本中文 | 久久毛片免费看一区二区三区 | 亚洲老头与老太hd | 9966久久精品免费看国产 | 91在线 一区 二区三区 | 9久热久爱免费精品视频在线观看 | 国产精品合集一区二区 | 国产日韩片 | 精品91一区二区三区 | 新影音先锋男人色资源网 | 婷婷色在线观看 | 99久久精品免费看国产高清 | 调教女高中生第3部分 | 色先锋影音先锋 | 国产精选之刘婷野战 | 四虎影库紧急大通知 | 摸进老太婆的裤裆小说 | 色婷婷综合久久久 | 日韩免费一级毛片 | 美女张开大腿让男人桶 | 99福利网| 国产一卡2卡3卡四卡精品网站 | 成人在线播放 | 欧美gayxxxx| 国产老熟 | 欧美日韩中文字幕一区二区高清 | 精品国产视频 | 午夜精品网 | 日韩高清一区二区三区不卡 | 欧美综合亚洲图片综合区 | 免费看60分钟大片视频播放 |