Ⅰ 請用python編一個小游戲,如五子棋,連連看,貪吃蛇,掃雷,計算器等等
#!/usr/bin/python
from Tkinter import *
import random
class snake(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.body = [(0,0)]
self.bodyid = []
self.food = [ -1, -1 ]
self.foodid = -1
self.gridcount = 10
self.size = 500
self.di = 3
self.speed = 500
self.top = self.winfo_toplevel()
self.top.resizable(False, False)
self.grid()
self.canvas = Canvas(self)
self.canvas.grid()
self.canvas.config(width=self.size, height=self.size,relief=RIDGE)
self.drawgrid()
s = self.size/self.gridcount
id = self.canvas.create_rectangle(self.body[0][0]*s,self.body[0][1]*s,
(self.body[0][0]+1)*s, (self.body[0][1]+1)*s, fill="yellow")
self.bodyid.insert(0, id)
self.bind_all("<KeyRelease>", self.keyrelease)
self.drawfood()
self.after(self.speed, self.drawsnake)
def drawgrid(self):
s = self.size/self.gridcount
for i in range(0, self.gridcount+1):
self.canvas.create_line(i*s, 0, i*s, self.size)
self.canvas.create_line(0, i*s, self.size, i*s)
def drawsnake(self):
s = self.size/self.gridcount
head = self.body[0]
new = [head[0], head[1]]
if self.di == 1:
new[1] = (head[1]-1) % self.gridcount
elif self.di == 2:
new[0] = (head[0]+1) % self.gridcount
elif self.di == 3:
new[1] = (head[1]+1) % self.gridcount
else:
new[0] = (head[0]-1) % self.gridcount
next = ( new[0], new[1] )
if next in self.body:
exit()
elif next == (self.food[0], self.food[1]):
self.body.insert(0, next)
self.bodyid.insert(0, self.foodid)
self.drawfood()
else:
tail = self.body.pop()
id = self.bodyid.pop()
self.canvas.move(id, (next[0]-tail[0])*s, (next[1]-tail[1])*s)
self.body.insert(0, next)
self.bodyid.insert(0, id)
self.after(self.speed, self.drawsnake)
def drawfood(self):
s = self.size/self.gridcount
x = random.randrange(0, self.gridcount)
y = random.randrange(0, self.gridcount)
while (x, y) in self.body:
x = random.randrange(0, self.gridcount)
y = random.randrange(0, self.gridcount)
id = self.canvas.create_rectangle(x*s,y*s, (x+1)*s, (y+1)*s, fill="yellow")
self.food[0] = x
self.food[1] = y
self.foodid = id
def keyrelease(self, event):
if event.keysym == "Up" and self.di != 3:
self.di = 1
elif event.keysym == "Right" and self.di !=4:
self.di = 2
elif event.keysym == "Down" and self.di != 1:
self.di = 3
elif event.keysym == "Left" and self.di != 2:
self.di = 4
app = snake()
app.master.title("Greedy Snake")
app.mainloop()
貪食蛇
Ⅱ 選哪個:游戲開發和傳統軟體開發
我來總結下朋友們的見解:1,從項目開發角度來看,游戲的UI部分,所佔比重比一般應用大一些;2,從功能性方面,游戲側重的是趣味性,應用軟體側重 實用性;3,外觀方面,游戲是情人,應用是老婆,一般情人比老婆漂亮;4,演算法方面,游戲的演算法會比一般應用軟體復雜;5,開發過程中的側重點,游戲開發一般用現成的開發引擎,做的時候主要是寫腳本,做圖,設計一些對戰演算法等,常用演算法可能已經集成在引擎里了。而開發游戲引擎需要很好的數學基礎,如線性代數、離散數學、解析幾何,以及微積分。應用軟體開發主要是做設計界面、流程、演算法,以及實現特定功能的API上。游戲開發和傳統軟體開發,都是運用程序語言來編寫,學習難易過程都是一樣的。只是運用的行業和技術方向的不同,兩者開發邏輯是不一樣的。大學傳統軟體開發到處都是,而且游戲開發基本沒有,從就業上會游戲開發會有很大的優勢。而且游戲開發行業是一個高薪行業,普遍高於其他IT技術崗位。
我在大學學的就是軟體開發,大二的時候感覺學不到東西,就去了「河北游戲學院」學習游戲開發,現在我在蘇州蝸牛工作。試用期工資就4500。你可以網路「河北游戲學院」具體去了解一下。
Ⅲ java 坦克大戰 相關思路 或者是代碼 想學學思路
public class MainActivity extends Activity {
/** Called when the activity is first created. */
items it;
ViewGroup.LayoutParams pa = new ViewGroup.MarginLayoutParams(-2, -2);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
it = new items(MainActivity.this);
AutomaticRoob ab = new AutomaticRoob(MainActivity.this);
this.addContentView(it, pa);
this.addContentView(ab, pa);
Servicer s =new Servicer(ab);
s.start();
AutomaticRoob ab2 = new AutomaticRoob(MainActivity.this);
this.addContentView(ab2, pa);
Servicer s2 =new Servicer(ab2);
s2.start();
AutomaticRoob ab3 = new AutomaticRoob(MainActivity.this);
this.addContentView(ab3, pa);
new Thread(ab3).start();
// Servicer s3 =new Servicer(ab3);
// s3.start();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.i("info",keyCode+"");
switch(keyCode){
case 19:
it.move(1);
break;
case 20:
it.move(3);
break;
case 21:
it.move(4);
break;
case 22:
it.move(2);
break;
}
return super.onKeyDown(keyCode, event);
}
}
//----------------------------------------用戶坦克-------------------------------------
public class items extends View {
public int Img=R.drawable.icon;
public int X;
public int Y;
public int type;
Handler hand;
Bitmap bit;
Context context;
public items(Context context) {
super(context);
this.context=context;
Init();
// TODO Auto-generated constructor stub
}
public void setType(int type){
this.type = type;
Init();
}
public void move(int x){
switch(x){
case 1:
this.Y-=10;
break;
case 2:
this.X+=10;
break;
case 3:
this.Y+=10;
break;
case 4:
this.X-=10;
break;
}
this.postInvalidate();
}
private void Init() {
// TODO Auto-generated method stub
bit = BitmapFactory.decodeResource(context.getResources(), Img);
this.postInvalidate();
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawBitmap(bit, X, Y, null);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
//---------------------------------機器人坦克------------------------------------------
public class AutomaticRoob extends View implements Runnable{
Context context;
public int X=0;
public int Y=0;
public int Img=R.drawable.icon;
Bitmap bit;
Random r ;
public AutomaticRoob(Context context) {
super(context);
r = new Random();
bit = BitmapFactory.decodeResource(context.getResources(), Img);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawBitmap(bit, X, Y, null);
}
int temp;
int Direction=3;
boolean mark=true;
public void run() {
while(true){
temp =r.nextInt(2)+1;
switch(temp){
case 1:
switch(Direction){
case 1:
Y-=10;
if(Y<0)Y=0;
break;
case 2:
X+=10;
break;
case 3:
Y+=10;
break;
case 4:
X-=10;
if(X<0)X=0;
break;
}
this.postInvalidate();
break;
case 2:
Direction=r.nextInt(4)+1;
break;
}
try {
new Thread().sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
這是android的。。思路差不多。。自己看看
Ⅳ 在百戰程序員怎麼學python
學習過程如下:九大模塊,幫學員打造企業所需業務能力
編程語言入門
編程基本知識:變數、數據類型、控制語句、容器、函數和文件操作。
面向對象編程
Python面向對象機制,常用設計模式。通過坦克大戰游戲體會面向對象開發的優勢。
高並發編程
運用多進程、多線程,以及Python中的協程,解決大型互聯網企業必須面對的核心問題——高並發問題。
Mysql資料庫
程序員必備技能——資料庫。重點掌握:資料庫設計思想、SQL語言。
實操項目:利用資料庫存儲歌單的音樂播放器
項目實戰
利用資料庫存儲歌單的音樂播放器項目;電商公司的在線購物平台項目;坦克大戰游戲。
Linux環境編程基礎
Linux和虛擬機環境配置、Linux常用命令、Linux 用戶和許可權管理、Linux 安裝軟體。
Python內存管理
內存管理、生成器、函數式編程、正則表達式。
網頁編程基礎
HTML5、CSS 樣式、JavaScript、Jquery。
網路爬蟲技術
爬蟲介紹與常用工具、爬蟲開發常用模塊、數據提取與驗證碼識別、Scrapy 框架簡介與配置、
Scrapy 框架高級、爬蟲數據存儲、動態數據抓取、分布式爬蟲。
Ⅳ 清華名師用30小時講解Python教程,整整400多集,拿走不謝
本套 Python 課程 400 集,從零基礎開始,全面講解 Python 基礎,直達可以手寫神經網路的境界。
我們創造性的增加了:手寫數據結構和演算法、手寫神經網路項目。讓零基礎學員在學習Python 時就開始接觸高深的底層知識、神經網路底層實現的知識。
內容共分 26 章,講解了 Python 基礎的方方面面,可以作為 Python 學習者的「寶典」。同時,穿插了 3 個大型實戰項目:
1. 坦克大戰 游戲 。
採用 游戲 開發的方式,寓教於樂,快樂中掌握 Python 基礎。
2. 手寫演算法和數據結構。
演算法和數據結構是很多大公司面試的不二選擇,我們這里講解內容的同時,手把手 帶你實現一個個底層演算法,將內功練扎實。
3. 手寫神經網路。
Python 是人工智慧的第一語言。我們創造性的在基礎課程中就加入了如何編寫一個自己的神經網路,為踏入神經網路的大門打下「堅實基礎」。
本套視頻一共 400 集,本套視頻共分 3 季:
第一季 【基礎篇】Python 基礎 (115 集)
第二季 【提高篇】Python 深入和擴展(100 集)
第三季 【擴展篇】網路編程、多線程、擴展庫(85 集)
第四季 【高手篇】演算法、Python 源碼、函數式編程、手工實現神經網路(100 集)
目錄:
一 Python基礎
二 資料庫編程
三 Liunx系統
四 網頁編程
五 VUE框架
六 Flask 框架
獲取方式:
私信「1」獲取
私信方法:點擊頭像 點擊回復「1」即可
Ⅵ 軟體開發和游戲開發有啥區別
這兩者之間的區別就是側重點不同一個游戲開發出來實際上也是一款軟體。如果你認為軟體開發跟游戲開發是兩種,那麼我的觀點是是前端的不同,後端都是實現一些邏輯的功能。
一、軟體開發
無論是桌面應用程序、Web應用、游戲亦或是手機APP,都屬於軟體開發的范晴。桌面應用程序比如網易雲,瀏覽器等等,一般多用C#寫界面,看起來會更加友好。Web應用的前端是html, css和JavaScript結合實現,手機APP則是Android, objectC、 Kotin ,當然H5也可以開發APP。伺服器端則是你擅長的語言去實現邏輯功能,並不是說我一定要利用java實現或者利用PHP實現,只要前後端統一好API介面,明確數據傳輸的格式等等。
二、游戲開發
游戲開發是軟體開發中比較特殊有一類。如果你一直從事的都是游戲開發,那麼你後面如果想再轉別的方向其實不太好轉。現在很多團隊在開發游戲時都會使用游戲引擎,在游戲引擎的基礎之上再利用編程語言進行開發。比如虛幻四引擎支持C++、JavaScript. C#進行開發,小米槍戰就是用虛幻四引擎開發。unity3D引擎支持JSC#進行游戲的開發, cocos2d支持C++lua和JavaScript開發游戲。看來游戲引擎對Javascript語言比較友好。學習過一段時間unity3D引擎開發游戲,開發過一些簡單的小游戲。以坦克大戰為例,把地圖、樹、地形等設計好之後,把一個坦克模型放進地圖中,利用C#編程式控制制這個坦克,當然你得手動設置些地方。這樣就不需要想app一樣寫個前端,只需要代碼控制各個組件即可。
Ⅶ python坦克大戰怎麼創建字體
通過給坦克移動函數添加返回值解決,若移動8幀中撞牆,則函數返回True,主函數中坦克移動添加1幀,使得每次接受鍵盤輸入坦克始終移動8幀。