首页 >

一个简单的编程小游戏,编程游戏的创作过程怎么书面表达 – 游戏开发 – 前端|

devout怎么记忆,bios里面怎么看硬盘,怎么用ps美化照片一个简单的编程小游戏,编程游戏的创作过程怎么书面表达 - 游戏开发 - 前端|一个简单的编程小游戏,编程游戏的创作过程怎么书面表达

devout怎么记忆,bios里面怎么看硬盘,怎么用ps美化照片一个简单的编程小游戏,编程游戏的创作过程怎么书面表达 - 游戏开发 - 前端|

用python可以编写一款游戏模拟器么?

python 项目:DIY 街机游戏

这个练习是一个小游戏程序,如果要是给它起个名字的话,应该叫:快躲,香蕉。 主要的游戏内容就是,游戏开始会从屏幕上方不断随便的掉一些铁块,在屏幕下 方有一个小香蕉是受你控制的,你需要不断的左右移动来躲避铁块。在你躲避完 一定数量的铁块之后,就会进入下一关。下一关依然是让你躲铁块,不过铁块下 降的速度就快了很多。在游戏中你可以按下任意键暂停,再次按则继续,按下 ESC 键退出。这就是全部的功能了,下面大家来看游戏的实现。

首先对所有代码分类:

1、整体上代码有一个配置模块,来对游戏的速度、屏幕 的宽度、香蕉移动速度、字体大小、各个物体的图片等进行配置。

2、然后是有 一个元素模块,即游戏中的两个元素落下来的铁块以及被砸的香蕉,其中还要包 含他们具有的行为。

3、然后还有游戏中的各种状态模块,状态模块中的类继承 关系稍微多一些,处于家谱最上方的就是 state 类,由它来衍生其他的所有状态, 它的直接子类是 Level 和 Pause,其中 Pause 有衍生出子类 Info、levelCleared、 GameOver、StartUp。

4、最后就是游戏的主模块,用来让其他模块协调工作 的。

然后再来看一个整体图:

有了上面整体的认识,下面就要细揪一下了。偶自己看代码的方法是这样的,首先整体分析,然后在从程序的入口点开始分析。偶估计大多数人也是这么做的。

首先是 squish.py 文件中的 game 类:

class Game:

def init (self,*args):

path = os.path.abspath(args[0])

dir = os.path.split(path)[0]

os.chdir(dir)

self.state = None

self.nextState = StartUp()

def run(self):

pygame.init()

flag = 0

if config.full_screen:

flag = FULLSCREEN

screen_size = config.screen_size

screen = pygame.display.set_mode(screen_size,flag)

pygame.display.set_caption(‘Fruit Self Defense’)

pygame.mouse.set_visible(False)

while True:

if self.state != self.nextState:

self.state = self.nextState

self.state.firstDisplay(screen)

for event in pygame.event.get():

self.state.handle(event)

self.state.update(self)

self.state.display(screen)

if name == ‘ main ‘:

game = Game(*sys.argv)

game.run()

忽略掉 init 中的设置代码,在 run 中,该管理类首先调用 pygame 初始化并启动游戏界面,然后在一个 whileTrue 的死循环中不断的进行状态判断,事件处理,然后根据事件更新当前状态,并且绘制界面。

让大家把焦点放在那个死循环中,因为他就是整个程序的流程所在。 其中状态和事件的关系就是,当发生某一事件之后,状态就会发生变化,比如点击事件、过关事件、死亡事件。这些事件的来源分别是:用户操作、系统判断、系统判断。要继续深入分析就需要再拿一部分代码出来。

依然是来自 squish.py 文件中剩余的所有代码:

import os, sys, pygame

from pygame.locals import *

import objects, config

class State:

def handle(self,event):

if event.type == QUIT:

sys.exit()

if event.type == KEYDOWN and event.key == K_ESCAPE:

sys.exit()

def firstDisplay(self, screen):

screen.fill(config.background_color)

pygame.display.flip()

def display(self, screen):

pass

class Level(State):

def init (self,number=1):

self.number = number

self.remaining = config.weights_per_level

speed = config.drop_speed

speed += (self.number – 1) * config.speed_increase

self.weight = objects.Weight(speed)

self.banana = objects.Banana()

both = self.weight,self.banana

self.sprites = pygame.sprite.RenderUpdates(both)

def update(self, game):

self.sprites.update()

if self.banana.touches(self.weight):

game.nextState = GameOver()

elif self.weight.landed:

self.weight.reset()

self.remaining -= 1

if self.remaining == 0:

game.nextState = LevelCleared(self.number)

def display(self, screen):

screen.fill(config.background_color)

updates = self.sprites.draw(screen)

pygame.display.update(updates)

class Paused(State ):

finished = 0

image = None

text = ”

def handle(self, event):

State.handle(self, event)

if event.type in [MOUSEBUTTONDOWN,KEYDOWN]:

self.finished = 1

def update(self, game):

if self.finished:

game.nextState = self.nextState()

def firstDisplay(self, screen):

screen.fill(config.background_color)

font = pygame.font.Font(None, config.font_size)

lines = self.text.strip().splitlines()

height = len(lines) * font.get_linesize()

center,top = screen.get_rect().center

top -= height // 2

if self.image:

image = pygame.image.load(self.image).convert()

r = image.get_rect()

top += r.height // 2

r.midbottom = center, top -20

screen.blit(image, r)

antialias = 1

black = 0,0,0

for line in lines:

text = font.render(line.strip(),antialias,black)

r = text.get_rect()

r.midtop = center,top

screen.blit(text, r)

top += font.get_linesize()

pygame.display.flip()

class Info(Paused):

nextState = Level

text = ”’

In this game you are a banana,

trying to survive a course in

self-defense against fruit,where the

participants will ‘defend’ themselves

against you with a 16 ton weight.”’

class StartUp(Paused):

nextState = Info

image = config.splash_image

text = ”’

Welcome to Squish.

the game of Fruit Self-Defense”’

class LevelCleared(Paused):

def init (self, number):

self.number = number

self.text = ”’Level %i cleared

Click to start next level”’ % self.number

def nextState(self):

return Level(self.number + 1)

class GameOver(Paused):

nextState = Level

text = ”’

Game Over

Click to Restart, Esc to Quit”’

其中用户判断部分就是 Paused 类中的 update 方法和 handle 方法,而系统判断就是 Level 类中的 update 方法。还有一个要注意的地方就是 Level 类中update 方法中的第一行代码:self.sprites.update(),这是让铁块不断下落的关键代码。用户判断部分的代码已经有了,下面需要贴上系统判断时用到的代码.

objects.py 中的代码:

import pygame,config,os

from random import randrange

class SquishSprite(pygame.sprite.Sprite):

def init (self, image):

pygame.sprite.Sprite. init (self)

self.image = pygame.image.load(image).convert()

self.rect = self.image.get_rect()

screen = pygame.display.get_surface()

shrink = -config.margin*2

self.area = screen.get_rect().inflate(shrink,shrink)

class Weight(SquishSprite):

def init (self, speed):

SquishSprite. init (self,config.weight_image)

self.speed = speed

self.reset()

def reset(self):

x = randrange(self.area.left, self.area.right)

self.rect.midbottom = x, 0

def update(self):

self.rect.top += self.speed

self.landed = self.rect.top >= self.area.bottom

class Banana(SquishSprite):

def init (self):

SquishSprite. init (self, config.banana_image)

self.rect.bottom = self.area.bottom

self.pad_top = config.banana_pad_top

self.pad_side = config.banana_pad_side

def update(self):

self.rect.centerx = pygame.mouse.get_pos()[0]

self.rect = self.rect.clamp(self.area)

def touches(self, other):

bounds = self.rect.inflate(-self.pad_side,-self.pad_top)

bounds.bottom = self.rect.bottom

return bounds.colliderect(other.rect)

在类 Banana 和 Weight 中的 update 和 touches 方法,用于进行系统判断。好了,到这主要的东西都分析完了,剩下的只需要稍看一下就能够懂得了。 最后还有一个配置模块的代码 config.py:banana_image = ‘banana.png’weight_image = ‘weight.png’splash_image = ‘weight.png’screen_size = 800,600background_color = 255,255,255margin = 30full_screen = 1font_size = 48drop_speed = 1banana_speed = 10speed_increase = 1weights_per_level = 10banana_pad_top = 40banana_pad_side = 20

到此为止,《python 基础教程》中的十个项目都已经分析了一遍,下一步要做的就是做几个实用软件出来,然后把 python 再好好深入研究下。

应晓勇要求,上几个运行图:

如何制作一个属于自己的游戏?

1. 制作游戏前需要给自己的游戏定位。

在自己动手制作游戏前,需要先做下计划,给自己的游戏定位。是大型游戏还是小游戏,游戏的种类是那种,有动作、冒险、休闲等。这个设计好后,才能开始下一步的游戏剧情的设计。

2. 设计自己的游戏剧情。

每个游戏都有自己的剧情和人物背景,根据自己想法,设计自己的游戏剧情。比如可以从小说中查找一些情节进行改写,形成游戏的主线,游戏的分支线可以在后期补充。

3. 选择制作游戏的开发工具。

不同种类的游戏,可以用不同的开发游戏的工具,大的游戏可以用编程开发工具,小的游戏,用脚本的开发工具也能制作出来,需要选择一个自己熟悉的开发工具,这样制作时,难度就会降低。

4. 设计游戏人物的原画和场景画。

游戏中人物的原画和场景设计很重要,开发工具设计的代码是在后台,展示在台面的就是人物的形象和不同风格的游戏场景。可根据自已设计的游戏主线,画出主场景和主要人物的原画,后期补充分场景和次要人物的原画。

5. 把设计好的原画和场景画进行扫描和加工处理。

原画和场景设计花费的时间比较长,美好的人物形象在华丽的场景中出现,让人看了印象深刻。接着把设计好的原画和场景画进行扫描和加工处理。这样在游戏开发时就可以直接作为素材添加了。

6. 选择好的游戏背景和场景音乐。

在玩家玩游戏时,好的游戏背景和场景音乐,让人听了轻松又愉快,会体验到游戏的乐趣,制作自己的游戏时,可以选择自己喜欢的音乐来作为游戏的背景和场景音乐。

7. 制作自己的游戏的开发和测试。

游戏的开发就是花费时间长的阶段,如果学过编程的人,经过几个月的游戏开发工具学习就可以进行游戏开发了。如果想简单一点就可以制作一个Flash的小游戏开发。经过一段时间开发完成后,需要自己对游戏的主线和支线进行游戏的测试,避免游戏出错。

扩展知识:

游戏制作,是指一个电子游戏的制作过程。由于游戏的类型、大小和要求,游戏制作需要的人员和时间也不一样。

游戏制作一般主要分为两大块,即程序开发、美术设计。程序开发主要包括服务器端开发、客户端开发。而美术设计包括场景、角色、次时代、特效、动画等部分,要完成一个优秀的游戏作品,每一部分都需有专业人才负责。


一个简单的编程小游戏,编程游戏的创作过程怎么书面表达 - 游戏开发 - 前端|
  • 用什么软件做编程游戏,学哪种编程上手快 - 游戏开发 - 前端|
  • 用什么软件做编程游戏,学哪种编程上手快 - 游戏开发 - 前端| | 用什么软件做编程游戏,学哪种编程上手快 - 游戏开发 - 前端| ...

    一个简单的编程小游戏,编程游戏的创作过程怎么书面表达 - 游戏开发 - 前端|
  • 机器人编程相关游戏名称,sc启蒙编程是什么 - 游戏开发 - 前端|
  • 机器人编程相关游戏名称,sc启蒙编程是什么 - 游戏开发 - 前端| | 机器人编程相关游戏名称,sc启蒙编程是什么 - 游戏开发 - 前端| ...

    一个简单的编程小游戏,编程游戏的创作过程怎么书面表达 - 游戏开发 - 前端|
  • 魔法编程打蝙蝠游戏,这个世界真的有超自然能力者吗 - 游戏开发 - 前端|
  • 魔法编程打蝙蝠游戏,这个世界真的有超自然能力者吗 - 游戏开发 - 前端| | 魔法编程打蝙蝠游戏,这个世界真的有超自然能力者吗 - 游戏开发 - 前端| ...