一个由棋盘格贴图和小球组成的游戏不知道名字,请教

虚幻4工程里面有的物体只显示棋盘格怎么回事_百度知道
虚幻4工程里面有的物体只显示棋盘格怎么回事
我有更好的答案
虚拟引擎一直以高画质、华丽的光影等为人称道,大家一直都在期待虚幻4引擎打造的华丽大作。可是,万万没想到首款由虚幻4引擎制作的手游竟然是这样一款“渣作”。
近日,《无尽之剑》和虚幻引擎的打造者Epic Games用虚幻4引擎制作了一款名为《Tappy Chicken》的游戏。从画面上看这完全就是一款《Flappy Bird》的仿制游戏,只不过“鸟”变成了“鸡”。
游戏在画面上并没有什么亮点,其实这并非开发商的真正目的,Epic Game的意图就是通过这样一个小游戏来展示虚幻4引擎的灵活性和易用性。《Tappy Chicken》的开发用到了虚幻4引擎中的蓝图脚本系统,整个开发从开始到完成仅用了几周时间。
《Tappy Chicken》现已登陆iOS以及安卓,Epic还在打算为该游戏制作基于Chrome/Firefox/Safari/Opera等浏览器版本。如果你也跃跃欲试,不妨购买虚幻4的使用权尝试自己开发一两个简单好玩的小游戏。在此之前,还是先游戏玩玩看吧
采纳率:97%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Pygame:编写一个小游戏
大学最后的考试终于结束了,迎来了暑假和大四的漫长的“自由”假期。当然要自己好好“玩玩”了。
我最近在学习Python,本意是在机器学习深度学习上使用Python进行编程的而学习的。偶然接触了pygame,觉得很感兴趣,所以打算使用pygame制作一个小游戏作为对Python学习和练习。
废话不多说了,先介绍一下pygame。
简要介绍:
请原谅本人比较懒,直接上百度百科进行介绍:()
Pygame是跨平台Python模块,专为电子游戏设计。
包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。基于这样一个设想,所有需要的游戏功能和理念都(主要是图像方面)都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。
Pygame 原为代替突然停止的 pySDL
Pygame 作者是 Pete Shinners 协议为 GNU Lesser General Public License
简单点概括,pygame是个专门用来做游戏开发的库,提供了一些较方便的API。
设计目标:
1、设计一个飞机大战的游戏,玩家能控制一架飞机在游戏界面内通过界面上下左右移动;
2、飞机能发射子弹,自动前进,当走出游戏界面之外时,其自动删除;
3、敌机随机产生,并自动前进,当走出游戏界面之外时,其自动删除;
4、如果敌机碰到子弹则,敌机破坏;
5、如果敌机碰到我方飞机,则游戏结束;
游戏运行截图:
源码下载:
网友分享的打飞机小游戏源码:(不需要积分)
我自己写的小游戏源码:(功能稍微要简单一些,收1分的积分做辛苦费╮(╯▽╰)╭)
环境搭建:
我是在Ubuntu环境下进行开发的,所以使用以下指令既可以自动安装配置好环境:
sudo apt-get install python-pygame
安装完成后,为检验是否配置成功。先进入Python交互环境,试着import pygame看看会不会报错。
程序架构构思:
1、首先,可以想到程序中可以分为3个类,即:玩家的飞机、敌机、子弹,所以功能都可以在这几个类中定义方法来实现;
2、背景可以调用pygame中的相关类和方法读出图片,随后在其上添加飞机、敌机、子弹的贴图即可,效果音也可以调用相关类和方法实现;
3、由于存在复数个敌机和子弹,所以分别建立一个列表变量来管理,比如说,如果发生碰撞就要破坏,即从列表中删除对应的元素;
4、建立一个死循环不断重复检测状态并刷新显示,为了控制帧率,还需要适当的延时,而不是一直运行程序。
代码讲解:
我在上传的程序中分为了两个文件:
myGame.py:主程序
myGameRole.py:定义相关的类,供myGame.py调用
resources:使用到的图片以及音频文件
myGame.py:
1、音频文件的初始化:
a、首先是对pygame进行初始化。
pygame.init()
b、随后调用pygame.mixer中的方法读入音频wav文件。
bullet_sound = pygame.mixer.Sound('resources/sound/bullet.wav')
enemy_down_sound = pygame.mixer.Sound('resources/sound/enemy1_down.wav')
game_over_sound = pygame.mixer.Sound('resources/sound/game_over.wav')
c、设置音量大小,参数范围从0~1。
bullet_sound.set_volume(0.3)
enemy_down_sound.set_volume(0.3)
game_over_sound.set_volume(0.3)
d、游戏背景音载入后循环播放。还有pygame.mixer.music.play()中第一个参数表示播放次数,选择-1表示循环播放,其后的参数表示播放起始和结束位置,可以用它预设的参数,即全部播放。
# 载入游戏音乐并循环播放
pygame.mixer.music.load('resources/sound/game_music.wav')
pygame.mixer.music.play(-1, 0)
pygame.mixer.music.set_volume(0.25)
2、图片的初始化
以上的程序实现创建窗口并贴图上去和显示刷新。
a、创建一个窗口,SCREEN_WIDTH 和SCREEN_HEIGHT 指定窗口大小,后面的图片都在这个窗口内显示。
SCREEN_WIDTH = 480
SCREEN_HEIGHT = 800
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
b、指定图片存放的路径,读出图片。
background = pygame.image.load('resources/image/background.png').convert()
c、指定图片的位置,将之前读出的图片贴在指定位置上,坐标表示图片的左上角位置。程序中放在死循环内,让其不断刷新。
screen.blit(background,(0, 0))
d、更新图片显示,把所有贴图后最后的结果显示。
# 整个界面刷新
pygame.display.update()
3、按键检测:
从下面的方法中可以得到返回值,其中包含了按键的键值。
pygame.event.get()
程序中通过遍历比较得到的键值是多少,一系列的if…elif…就是这个目的。如果检测到了对应的按键,就调用类中的相关方法执行相应的操作。
myGameRole.py
1、飞机类:(截图太大了,所以直接贴上代码了)
class Player(object):
def __init__(self, screen):
self.bulletList = []
planeImageName = 'resources/image/hero1.png'
self.image = pygame.image.load(planeImageName)
self.image_width = 100
self.image_height = 124
self.x = 180
self.y = 600
self.speed = 20
self.window =
self.name = 'player'
def getPos(self):
return [self.x, self.y, self.image_width, self.image_height]
def crash(self):
crashImageName = 'resources/image/hero_blowup_n3.png'
self.image = pygame.image.load(crashImageName)
def shoot(self):
bullet = Bullet(self.window, self)
self.bulletList.append(bullet)
def bulletClear(self):
num = len(self.bulletList)
for i in range(0,num):
if self.bulletList[i].y &= 0:
self.bulletList[i]
def moveUp(self):
if self.y &= 0:
self.y = 0
self.y -= self.speed
def moveDown(self):
if self.y &= SCREEN_HEIGHT - self.image_height:
self.y = SCREEN_HEIGHT - self.image_height
self.y += self.speed
def moveLeft(self):
if self.x &= 0:
self.x = 0
self.x -= self.speed
def moveRight(self):
if self.x &= SCREEN_WIDTH - self.image_width:
self.x = SCREEN_WIDTH - self.image_width
self.x += self.speed
def draw(self):
self.window.blit(self.image, (self.x, self.y))
def keyHandle(self, keyValue):
if keyValue == 'left':
self.moveLeft()
elif keyValue == 'right':
self.moveRight()
elif keyValue == 'up':
self.moveUp()
elif keyValue == 'down':
self.moveDown()
elif keyValue == 'space':
self.shoot()
一个一个方法来介绍,不重复贴太多代码了,可以在前面查看:
a、其中建立了一些初始化用的变量,比如用来保存读入的图片,初始的坐标位置等等,其中都有注释。传入的screen参数就是之前创建的游戏运行的窗口,为方便操作,建立玩家类时就传入,以后直接在内部方法中调用而不需从外部获取。
def __init__(self, screen):
b、返回当前的位置坐标。
def getPos(self):
c、飞机破坏,读取对应图片,并贴在窗口中响应的位置上。
def crash(self):
d、实际中就是新建一个子弹类的对象,并添加到一个列表中,此后对于子弹对象通过列表管理。
def shoot(self):
e、检测子弹列表中的所有子弹对象是否出界,若出界直接从列表中删除。
def bulletClear(self):
f、飞机上下左右移动,实质就是操作该player对象的x,y坐标。
def moveUp(self):
def moveDown(self):
def moveLeft(self):
def moveRight(self):
g、绘制player对象,即调用前面所说的screen.blit方法更新(这里的screen代表前面实例化的窗口)。
def draw(self):
h、根据键值处理,调用前面的几个方法,诸如:上下左右移动、发射子弹等等方法。
def keyHandle(self, keyValue):
2、子弹类:
class Bullet(object):
def __init__(self, screen, plane):
bulletImageName = 'resources/image/bullet1.png'
self.image = pygame.image.load(bulletImageName)
self.image_width = 9
self.image_height = 21
self.x = plane.x + plane.image_width // 2 - self.image_width // 2
self.y = plane.y + self.image_height
self.speed = 12
self.window = screen
def getPos(self):
return [self.x, self.y, self.image_width, self.image_height]
def move(self):
self.y -= self.speed
def draw(self):
self.window.blit(self.image, (self.x, self.y))
a、设置一些变量和参数,screen是窗口的实例化对象,plane表示飞机对象。
def __init__(self, screen, plane):
b、获取子弹对象的坐标(图片的左上角位置坐标)
def getPos(self):
c、子弹移动,实际操作它的位置坐标变化。不断在程序的循环中调用,使其创建后自动移动。
def move(self):
d、绘制bullet对象,即调用前面所说的screen.blit方法更新(这里的screen代表前面实例化的窗口)。
def draw(self):
3、敌机类:
class Enemy(object):
def __init__(self, screen, x=0, y=0):
enemyImageName = 'resources/image/enemy1.png'
self.image = pygame.image.load(enemyImageName)
self.image_width = 51
self.image_height = 39
self.speed = 3
self.x = x
self.y = y
self.window =
self.direction = 'right'
self.name = 'enemy'
def getPos(self):
return [self.x, self.y, self.image_width, self.image_height]
def checkOut(self):
if self.y &= SCREEN_HEIGHT - self.image_height:
return True
return False
def move(self):
self.y += self.speed
def crash(self):
crashImageName = 'resources/image/enemy1_down3.png'
self.image = pygame.image.load(crashImageName)
def draw(self):
self.window.blit(self.image, (self.x, self.y))
a、screen跟前面一样,是为了后续程序调用方便而传入的;x、y表示敌机的坐标,默认都取0。
def __init__(self, screen, x=0, y=0):
b、获取位置坐标
def getPos(self):
c、判断是够移动出了窗口的界面范围,若出去了返回True;若否,则返回False。
def checkOut(self):
d、实际是操作enemy对象的坐标变化,以使其移动。不断调用,实现自动移动。
def move(self):
e、与前面一样,飞机破坏时导入图片,并刷新,表示爆炸效果。
def crash(self):
f、在窗口上刷新enemy对象的图片。
def draw(self):
就介绍这么多了,这里只是大概介绍了一下程序大概的思想和一些需要注意的地方。编写程序时的思路与此完全不同,随着功能的不断实现,类的方法、成员等等都是同步改变的。在我上传的程序中也有注释,可以到其中查看完整的程序。()
没有更多推荐了,
不良信息举报
举报内容:
Pygame:编写一个小游戏
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!战棋类游戏请教
战棋类游戏的地图 和制作方格 移动的时候走在格里面 制作思路是什么 给点思路呗&&棋盘格类游戏 或者叫 战棋类游戏 的地图方格 是画上去的 还是需要计算的呢 &这类游戏的英文名字叫什么呢?&&有类似的教程吗 棋盘格类的移动啊 等 感谢大家 感谢 给点思路726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('http://www.ceeger.com/forum/attachment/Mon_7_2ed0d.jpg');" />
要评论请先&或者&
是否要用到Rect
简单的类似战棋的移动,实现如下功能:生成格子;生成方块;控制方块移动;染色。效果如图:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('http://www.ceeger.com/forum/attachment/Mon__4bcdbc.jpg');" alt="开始" />726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('http://www.ceeger.com/forum/attachment/Mon__c22fcc8be82956a.jpg');" alt="选中" />&726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('http://www.ceeger.com/forum/attachment/Mon__94e6d24d13fb5f1.jpg');" alt="移动中" />&726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('http://www.ceeger.com/forum/attachment/Mon__75880a2adff3f52.jpg');" alt="CS脚本" />&&
我仔细看了一下这个例子 &真的很不错, 包括棋盘的制作,棋子的制作,游戏机制都有一个初步的思考,可作为棋子游戏的入门实例虽然还只是一个很简单的demo &不过扩展性很大
& & 下下来参考参考
:简单的类似战棋的移动,实现如下功能:生成格子;生成方块;控制方块移动;染色。效果如图:[附件][附件][附件][附件]....... ( 01:20) 感谢bloodybrid提供的实例,收益匪浅。
为什么下载不了呢?想学习一下
很好啊,下载学习学习
很好的 下载下来学习学习【图片】又入了一个棋盘格25.求盖章。【路易威登吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:229,217贴子:
又入了一个棋盘格25.求盖章。收藏
又入了一个棋盘格25.求盖章。
求大神盖章
继续求鉴定
小白看真 等大神
谢谢哈,我感觉也真,继续求
又入?楼楼之前是老花25吗
一入驴吧深似海,从此存款是路人
棋盘格是真好看
登录百度帐号小四奥数(数学游戏)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
小四奥数(数学游戏)
&&金牌教练打造
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩1页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 lv棋盘格 的文章

 

随机推荐