导航:首页 > 编程语言 > python坦克大战开发思路

python坦克大战开发思路

发布时间:2023-10-18 05:34:12

Ⅰ 请用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帧。

阅读全文

与python坦克大战开发思路相关的资料

热点内容
max加线命令 浏览:424
app胖瘦模式哪个好用 浏览:724
可以下载源码的软件 浏览:487
程序员写一天代码累吗 浏览:628
ie文件夹禁止访问 浏览:543
百川互联网程序员 浏览:783
linuxpython解释器 浏览:667
兴安得力软件加密狗 浏览:492
智能网络摄像头加密 浏览:574
软件毕业程序员培训 浏览:652
安卓陀螺仪低怎么办 浏览:247
一级建造师复习题集pdf 浏览:903
法理学pdf海默 浏览:392
服务器内存储器是用什么的 浏览:819
微帮同城分类信息源码 浏览:808
安卓系统ad是什么 浏览:473
python输出中不加占位符 浏览:596
linux文件夹权限控制 浏览:732
雅虎邮箱怎么加密码 浏览:822
为什么安卓手机登录不了苹果账号 浏览:537