Monkey-X l Язык для программирования игр: Monkey-x l Основы l Переменные, массивы, объекты

» Раздел: Monkey-X

В Monkey-X переменные делятся на два типа
  • Global
  • Local
Глобальные переменные — это переменные, которые существуют до тех пор, пока выполняется программа.
Локальные переменные — это временные переменные, которые исчезают, при уничтожении локальной области видимости, в которой они были объявлены.
Локальные переменные могут быть объявлены в любой локальной области видимости.
Ниже представлено все, что образует локальную область видимости:
  • Операторы внутри функции или метода
  • Операторы внутри If, Else If или блока If
  • Операторы внутри Case или блока Default
  • Операторы внутри While, Repeat и цикла For.
Глобальные переменные могут быть объявлены в области видимости модуля или внутри объявления класса.
Примеры:
	Local age:Int=10 						' Локальные переменные'
	Local health:Float = 100.0	
	
	Global isPlayerAlive:Bool = True  ' Глобальные переменные ' 
	Global isFriendly:Bool = True
Типы переменных:
Целое число - Int
Число с плавающей точкой - Float
Строка - String
Boolean - Bool да да тупое название

Объявление переменных:
	Local Money:Int = 100 ' Целое число диапазон значений от: -2,147,483,648 до 2,147,483,647. '
	
	Local MegaByte:Float = 124.4 ' Число с плавающей точкой ' 
	
	Local gamePaused:Bool = False ' Boolean ' 
	
	Local name:String = "John Smith"  '  Строка '
	
	Local myVariable% = 1024 ' Тот же Int. В Monkey-X у типов данных есть свои знаки, у Int это %'
	
	Local myVariable# = 3.141516 'Тот же Float. '

	Local myVariable? = True 'Тот же Bool'
	
У String'a нету своего знака
У каждого типа данных есть свой знак и можно писать не Local Variable:Int, а Local Variable%.
Знаки типов данных
  • Int это %
 Local myVariable% = 1 'Monkey-X понимает как Local myVariable:Int '
  • Float это #
	Local myVariable# = 1.1 'Monkey-X понимает как Local myVariable:Float '
  • Bool это ?
	Local myVariable? =True 'Monkey-X понимает как Local myVariable:Bool'

Массивы
Массив — это линейная последовательность значений, доступ к которым осуществляется по целочисленному индексу.
Каждый массив связан с определенным типом — то есть, типом элемента, который содержится в массиве. В связи с особенностями Monkey, тип элемента массива является статическим. Тип должен быть известен во время компиляции, поэтому он не может быть преобразован во время выполнения.
Примеры:
	Local box:Int[]            'массив целых чисел '
	Local ratio:Float[]		 'массив чисел с плавающей точкой '
	Local thing:Int[][]        'массив массивов целых чисел '
Литерал массива — разделенная запятыми (возможно пустая) последовательность выражений, заключенных в [ ]. Выражения в записи массива должны быть одного типа. Например:
	Local box:Int[]=[]                              'пустой массив '
	Local scores:Int[]=[10,20,30]                   'последовательность, разделенная запятой '
	Local text:String[]=["Hello","There","World"]   'последовательность, разделенная запятой '
Для массивов также доступны следующие псевдо-методы:
  • Method Length() Property Количество элементов в массиве.
  • Method Resize:Array( newLength ) Копирует элементы текущего массива, начиная с первого, в новый массив длиной newLength, и возвращает его.
	Local text:String[]=["Hello","There","World"]        'последовательность, разделенная запятой '
 
	Print text.Length                'выведет "3" '
 
	text=text.Resize( 2 ) 
 
	Print text.Length                'выведет "2" '

Объекты:
Объект — экземпляр класса, который содержит в себе ряд констант, переменных, методов и функций.
Пример:
	Local mine:MyClass = New MyClass
	
	Function Main() 
    	Local myObject:=New MyClass 
    	myObject.x=10 
    	myObject.y=20 
    	myObject.z=30 
	End  

Выражения:
Выражения — это часть программы, которая выполняет вычисления, совершает логические операции и возвращает результат выполнения методов и функций.
=Равно
<Меньше, чем
>Больше, чем
<=Меньше, чем или равно
>=Больше, чем или равно
<>Не равно
AndЛогическое "и"
OrЛогическое "или"
NotЛогическое отрицание
*Умножение
/Деление
Mod Деление по модулю
+ Унарный плюс
- Унарный минус
New Создает новый Объект
Null Не инициализированный объект
True Истина (логический, булев тип)
False Ложь (логический, булев тип)
Self Ссылка на текущий объект класса
Super Обращение к родительскому классу
Балансировка типов аргумента
При выполнении арифметических операций с двумя переменными (*, /, Mod, +, -) или операций сравнения (=, <, >, &#8656;, >=, <>), аргументы будут сбалансированы в соответствии со следующими правилами:
Если операнд не строка, не число с плавающей точкой или не целое, то будет сгенерирована ошибка;
Иначе, если операнд является строкой, тогда сбалансированный тип является строкой;
Иначе, если оператор является числом с плавающей точкой, то сбалансированный тип будет числом с плавающей точкой;
В противном случае, сбалансированный тип является целым числом.
В случае арифметических операций, аргументы, при необходимости, неявно преобразуются в сбалансированный тип, точно также, как и результат.
В случае выполнения операций сравнения, аргументы, при необходимости, неявно преобразуются в сбалансированный тип, а результат приводится к логическом (булеву) типу.
Единственная арифметическая операция, которая может быть применена к строкам — это сложение, которое выполнит объединение строк.
Логические операторы
Аргументы логических операторов (And, Or), при необходимости, сначала конвертируются, в булев тип. Соответственно результат также имеет логический тип.
В случае с оператором Or, если результат выражения в левой части является истиной (true), то выражение находящееся в правой части не вычисляется.
Например:
	If car<>Null Or GetSpeed()>10 Then... 
В приведенном выше примере, если car не инициализированный объект , то выражение справа от Or не вычисляется: то есть функция GetSpeed никогда не будет вызвана.
В случае с оператором And, если результат выражения в левой части является ложью (false), то выражение, находящееся в правой части, не вычисляется.
Например:
	If enemies.Count > 0 And HasEnemyInSight() Then ... 
В приведенном выше примере, если значение enemies.Count меньше или равно нулю, то выражение справа от And не вычисляется: то есть функция hasEnemyInSight никогда не будет вызвана.
90% информации из документации...

Просмотров: 657

SomeFire #1 - 2 года назад 0
32 бита на число - грустно как-то.
Диапазон поддерживаемых целочисленных значений зависит от целевой платформы, но составляет не менее 32-х бит.
LeikyS #2 - 2 года назад 0
SomeFire:
32 бита на число - грустно как-то.
Диапазон поддерживаемых целочисленных значений зависит от целевой платформы, но составляет не менее 32-х бит.
Ну это в принципе не смертельно
freizi #3 - 2 года назад (отредактировано ) 0
Немного подправить :)
При выполнении арифметических операций с двумя переменными (*, /, Mod, +, -) или операций сравнения (=, <, >, &#8656;, >=, <>)