Итак, я разработчик флеш-игр и пытаюсь перейти с AS2 на AS3 + ООП, всего через 3 года после всех остальных.Существует множество бесплатных, очень полезных материалов, и я трачу 2-3 дня на то, чтобы обдумать некоторые из них, но сейчас я чувствую, что просто хочу начать, попробовать и изучить более сложные вещи.как я иду (так же, как я сделал с AS2).
Я получаю преимущества (большинство аспектов) ООП, и однажды меня заставили научиться делать пару игр в обработке, которые заставили меня написать несколько классов, и мне действительно понравилась вся вещь наследования, котораяЯ думаю, что это самая главная причина, по которой я стремлюсь двигаться дальше.
Я просто хотел спросить о структуре игры - это мой текущий способ программирования на AS2 (см. пример ниже, с некоторым псевдокодом), близкий ккак бы вы организовали вещи в ООП, или в моей игровой логике / структуре есть какие-то большие недостатки, которые я не вижу?Насколько я понимаю, в AS3 / OOP я должен был бы поступить по-другому: иметь класс для движущихся вещей, таких как игрок, герой, ракеты и т. Д., Затем иметь класс врага, который расширяет этот класс, а затем иметь классы для каждого расширяющегося врагавражеский класс, в отличие от того, где каждый «класс» вместо этого является объектом и функцией, вызываемой из основного игрового цикла, а подклассы - вместо «if» в каждой функции.Но кроме этого, мой стиль программирования находится на правильном пути или мне нужно переосмыслить логику моего кода, чтобы он эффективно работал в настройках AS3 / OOP?
Любой совет будет высоко оценен!
function initializeF() {
initializeVariablesF();
startGameF();
}
function initializeVariablesF() {
enemyO = new Object(); //which will contain each enemy instance
enemyA = new Array(); //which will be a list of all the enemies, maybe superfluous?
playerShotsA=new Array();
//and so on...
enemyDataO = new Object();
enemyDataO.goblin = new Object();
//and then some vars relating to the goblin, sort of a class without methods, right?
}
function startGameF() {
this.onEnterFrame = function() { //my game loop
checkKeysF(); //checks which keys are pressed, saves it to a global object
playerMovementF(); //moves the player about depending on which keys are pressed
playerShotsF(); //deals with the missiles/shots/lasers the player has shot
enemyCreatorF(); //decides when to create a new enemy
enemyF(); //deals with all enemies in the enemyA
enemyShotsF(); //deals with the missiles/etc the enemies have created
};
}
function enemyCreatorF(){
//randomly creates an enemy through a "factory" function:
if (random(20)==1){
attachEnemyF(enemyDataO.goblin, ...and some values like position etc)
}
}
function attachEnemyF(a_enemyType, ... a bunch of values like position){
//create a new enemy object
var enemy=enemyO[new unique enemy name]
enemy.enemyType=a_enemyType
enemy.clip=attachMovie(a_enemyType,"clip", [values like x and y passed on])
enemyA.push(enemy)
}
function playerShotsF(){
for (every shot in playerShotsA){
//move it about
for (every enemy in enemyA){
//if it hits an enemy, add damage to the enemy
}
}
}
function enemyF() {
for (every enemy in enemyA) {
//check if it's dead/less health than zero, if so remove it from the array, remove it's clip, null it's object
//if it's not, move it about, maybe have it shoot
//if it touches the player, decrease the player's health
//different behavior depending on the enemy's type by "if" or "switch" statements
}
}