一位有 Python 编程背景的开发者想要学习一门新语言,并对游戏开发感兴趣。他考虑学习 C# 和 Action Script,前者可以用于制作 XBLA 游戏,后者可以用于制作 Flash 游戏。他询问哪种语言更适合长期学习。
2、解决方案
1、C#
一位开发者建议学习 C#,因为它提供了广泛的应用场景:
- 可以用它在台式机上使用 XNA 来编写游戏;
- 也可以用 XNA 来编写 Xbox 游戏;
- 此外,借助 XNA 和 XNA Touch,还能用 C# 开发移动设备游戏;
- 而使用 Silverlight,则可以在网络上编写游戏。
相比之下,Action Script 只能用于制作 Flash 游戏,应用场景较为有限。
2、Action Script
另一位开发者则认为 Action Script 3/Flash 更适合学习游戏开发,因为它具有以下优势:
- 可以非常快速地制作游戏;
- 其次,可以让大量的用户更快地提供反馈,这是任何其他环境都无法比拟的。
虽然并非所有游戏都能获得如此多的关注,但使用 Flash,可以更容易地制作出能让大量人实际玩到并提供反馈的游戏。而学习如何制作出优秀的游戏,比学习一门新的编程语言要困难得多。
3、结论
总的来说,C# 具有更广泛的应用场景,而 Action Script 则更适合快速制作游戏并获得用户反馈。两种语言各有优势,开发者可以根据自己的需求和兴趣做出选择。
代码例子
以下是一个用 C# 编写的游戏代码示例:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
public class Game1 : Game
{
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
private Texture2D _playerTexture;
private Vector2 _playerPosition;
private float _playerSpeed;
public Game1()
{
_graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
IsMouseVisible = true;
}
protected override void Initialize()
{
_playerPosition = new Vector2(100, 100);
_playerSpeed = 5f;
base.Initialize();
}
protected override void LoadContent()
{
_spriteBatch = new SpriteBatch(GraphicsDevice);
_playerTexture = Content.Load<Texture2D>("player");
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
Exit();
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Up))
_playerPosition.Y -= _playerSpeed;
if (keyboardState.IsKeyDown(Keys.Down))
_playerPosition.Y += _playerSpeed;
if (keyboardState.IsKeyDown(Keys.Left))
_playerPosition.X -= _playerSpeed;
if (keyboardState.IsKeyDown(Keys.Right))
_playerPosition.X += _playerSpeed;
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
_spriteBatch.Begin();
_spriteBatch.Draw(_playerTexture, _playerPosition, Color.White);
_spriteBatch.End();
base.Draw(gameTime);
}
}
以下是一个用 Action Script 3 编写的游戏代码示例:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.geom.Point;
public class Player extends MovieClip
{
private var _speed:Number = 5;
public function Player()
{
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void
{
if (Keyboard.isKeyDown(Keyboard.UP))
y -= _speed;
if (Keyboard.isKeyDown(Keyboard.DOWN))
y += _speed;
if (Keyboard.isKeyDown(Keyboard.LEFT))
x -= _speed;
if (Keyboard.isKeyDown(Keyboard.RIGHT))
x += _speed;
}
}
}