Дізнайтеся C # для Android, частина 2: Класи та петлі

Автор: John Stephens
Дата Створення: 24 Січень 2021
Дата Оновлення: 1 Липня 2024
Anonim
Прохождение Little Nightmares 2 — Часть 2: Школа
Відеоролик: Прохождение Little Nightmares 2 — Часть 2: Школа

Зміст


У першій частині цієї серії підручників для Android щодо вивчення C # ми розглянули абсолютні основи програмування на C #. Ми охоплювали методи (групи коду, які виконують конкретні завдання), деякі основні синтаксиси (наприклад, потреба в напівколонках), змінні (контейнери, які зберігають дані), та "if заяви" для управління потоком (код розгалуження, що залежить від значень змінних). Ми також бачили, як передавати змінні типу рядків як аргументи між методами.

Вам слід повернутися назад і подивитися на це, якщо ви його ще не прочитали.

На цьому етапі ви зможете зробити основні консольні програми, наприклад, вікторини, програми, що зберігають дані або калькулятори.

У другій частині ми збираємося трохи більш честолюбні, висвітлюючи ще деякі основи - на зразок циклів - та вивчаючи, як створити та взаємодіяти з класами. Це означає, що ми зможемо почати проводити забій у розробці Android і бачити, як усунути цей пробіл. Продовжуйте читати, якщо ви хочете по-справжньому вивчити C #!


Розуміння класів та об’єктно-орієнтованого програмування

Коротко в першій частині ми пояснили основи об'єктно-орієнтованого програмування, яке обертається навколо мов, використовуючи "класи" для опису "об'єктів". Об'єкт - це частина даних, яка може представляти багато речей. Це може бути буквальний об’єкт в ігровому світі, як весна, або може бути чимось більш абстрактним, як менеджер, який обробляє рахунок гравця.

Один клас може створювати кілька об'єктів. Тож ви можете написати один «ворожий» клас, але зможете генерувати весь рівень, повний поганих хлопців. Це одна з великих переваг використання об’єктно-орієнтованого програмування. В іншому випадку єдиним способом поводження з поведінкою безлічі ворогів було б використання безлічі індивідуальних методів, кожен з яких містив інструкції про те, як поганий хлопець повинен вести себе за різних обставин.


Якщо це все-таки трохи складно, щоб обернутися головою, все, що вам потрібно знати, - це те, що предмети мають властивості та поведінку. Це так само, як реальні об’єкти. Наприклад, кролик має такі властивості, як розмір, колір та назва; і це поведінка, як стрибати, сидіти та їсти. По суті, властивості є змінними, а поведінка - методами.

Програма, яку ми побудували на минулому уроці, також є прикладом класу. Опис, який ми тут описуємо, - це якась система контролю паролів. Властивість, яку він має, - це рядок UserName, а поведінка, яку він має, - NewMethod (перевірка імені користувача та привітання).

Якщо цеще трохи заплутано, єдиний спосіб обійти голову - створити собі новий клас чи два!

Створення нового класу

Якщо ви збираєтеся вивчати C #, вам потрібно знати, як робити нові класи. На щастя, це дуже легко. Просто натисніть пункт меню Проект і виберіть "+ Додати клас".

Виберіть "C #" і назвіть його "Кролик". Ми будемо використовувати цей клас для створення концептуальних кроликів. Ви побачите, що я маю на увазі через мить.

Якщо ви ввійдете у свій Провідник рішень праворуч, ви побачите, що під програмою Program.cs був створений новий файл під назвою Rabbit.cs. Молодці - це одна з найважливіших речей, яку потрібно знати, якщо ви хочете вивчити C # для Android!

У новому файлі Rabbit.cs є якийсь той самий код "котлован", що і раніше. Він досі належить до того ж простору імен, і він має клас з тим же ім'ям, що і файл.

простір імен ConsoleApp2 {class Rabbit {}}

Тепер ми будемо надавати нашому кроликові деякі властивості з тим, що ми називаємо "конструктором".

Конструктор - це метод у класі, який ініціалізує об'єкт, що дозволяє нам визначати його властивості під час першого створення. У цьому випадку ось що ми будемо говорити:

простір імен ConsoleApp2 {class Rabbit {public string RabbitName; публічна струна RabbitColor; public int RabbitAge; public int RabbitWeight; загальнодоступний кролик (ім'я струни, колір струни, вік int, вага) {RabbitName = ім'я; RabbitColor = колір; RabbitAge = вік; Вага кролика = вага; }}}

Це дозволяє нам створити нового кролика з іншого класу та визначити його властивості, як ми:

Кролик кролик1 = новий кролик («Джефф», «коричневий», 1, 1);

Тепер я розумію, що в ретроспективі вагу, мабуть, мав би бути поплавок або подвійний, щоб дозволити десяткових знаків, але ви розумієте. Ми збираємося обвести кролика до найближчого цілого числа.

Ви побачите, як виписуєте свого кролика, вам буде запропоновано передати правильні аргументи. Таким чином ваш клас майже став частиною коду.

Вірите чи ні, цей код створив кролика! Ви не можете бачити свого кролика, оскільки у нас немає графіки, але вона є.

І щоб довести це, тепер ви можете використовувати цей рядок:

Console.WriteLine (Rabbit1.RabbitName);

Потім це скаже вам ім'я кролика, якого ви тільки що створили!

Ми також можемо збільшити вагу нашого Кролика так:

Rabbit1.RabbitWeight ++; Console.WriteLine (Rabbit1.RabbitName + "важить" + Rabbit1.RabbitWeight + "kg");

Зауважте тут, що додавання "++" в кінці чогось поступово збільшить його значення на одиницю (Ви також можете написати "RabbitWeight = RabbitWeight + 1").

Оскільки наш клас може виготовити стільки кроликів, скільки нам подобається, ми можемо створити безліч різних кроликів, кожен з яких має свої властивості.

Додавання поведінки

Тоді ми також можемо вибрати кролику поведінку. У цьому випадку давайте їм їсти.

Для цього ми створили би загальнодоступний метод під назвою «Їжте», і це дозволило б звучати їжу, а також поступово збільшувати вагу кролика:

публічна недійсність Eat () {Console.WriteLine (RabbitName + ": прикус!"); Вага кролика ++; }

Пам'ятайте, що "public" означає доступний поза класом, а "void" означає, що метод не повертає жодних даних.

Тоді, зсередини Program.cs, ми зможемо викликати цей метод, і це змусить кролика, який ми вибрали, їсти та збільшуватись:

Console.WriteLine (Rabbit1.RabbitName + "важить" + Rabbit1.RabbitWeight + "kg"); Кролик1. Їжте (); Кролик1. Їжте (); Кролик1. Їжте (); Console.WriteLine (Rabbit1.RabbitName + "важить" + Rabbit1.RabbitWeight + "kg");

Це призведе до того, що Джефф поїсть тричі, тоді ми почуємо це і зможемо побачити, що він став більшим! Якби у нас на сцені був ще один кролик, вони також могли б поїсти!

Console.WriteLine (Rabbit1.RabbitName + "важить" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "важить" + Rabbit2.RabbitWeight + "kg"); Кролик1. Їжте (); Кролик1. Їжте (); Кролик2.Іж (); Кролик2.Іж (); Кролик1. Їжте (); Console.WriteLine (Rabbit1.RabbitName + "важить" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "важить" + Rabbit2.RabbitWeight + "kg");

У нього, як у кроликів

Це не особливо елегантний спосіб поводження з великою кількістю предметів, оскільки нам потрібно виписати команди для кожного кролика вручну, і ми не можемо динамічно збільшувати кількість кроликів наскільки ми хочемо. Ми не просто хочемо вивчати C # - ми хочемо навчитися писати чистий C # код!

Ось чому ми можемо використовувати список. Список - це колекція; сама змінна, яка в основному містить посилання на інші змінні. У цьому випадку ми можемо скласти список Кроликів, і гарна новина полягає в тому, що це дуже легко зрозуміти:

Список RabbitList = новий список(); RabbitList.Add (новий Rabbit ("Jeff", "brown", 1, 1)); RabbitList.Add (новий кролик («Сем», «білий», 1, 2));

Це створює нового кролика, як і раніше, але одночасно додає кролика до списку. Так само можна сказати так:

Кролик кролик3 = новий кролик ("Джоні", "помаранчевий", 1, 1); RabbitList.Add (Rabbit3);

Так чи інакше, об’єкт створено та додано до списку.

Ми також можемо зручно та елегантно повернути інформацію з нашого списку кроликів таким чином:

foreach (var Rabbit in RabbitList) {Console.WriteLine (Rabbit.RabbitName + "важить" + Rabbit.RabbitWeight + "kg"); }

Як ви можете зрозуміти, "передбачити" означає, що ви повторите крок один раз для кожного елемента в списку. Ви також можете отримати інформацію зі свого списку так:

RabbitList.Eat ();

Тут "1" - це індекс, тобто ви посилаєтесь на інформацію, що зберігається в першій позиції. Як це відбувається, це насправді другий кролик, якого ви додали: адже списки в програмуванні завжди починаються з 0.

Фібоначчі

Якщо ви ще не здогадувались, ми зараз будемо використовувати всю цю інформацію для створення послідовності Фібоначчі. Зрештою, якщо ви вивчаєте C # для Android, ви повинні мати можливість зробити щось цікаве зі всією цією теорією!

У послідовності Фібоначчі кроликів закривають у приміщенні та залишають для розведення. Вони можуть розмножуватися через місяць, після чого вони статевозрілі (я не можу підтвердити, чи це правильна біологія кроликів). Якщо кожна пара кроликів може виробляти один раз на місяць, виробляючи два потомства, ось як виглядає послідовність:

1,1,2,3,5,8,13,21,34

Магічно кожне число у послідовності - це значення двох попередніх чисел, доданих разом. На думку науки, це якась велика справа.

Класна річ, ми можемо це повторити.

По-перше, нам потрібно ввести нову концепцію: петлю. Це просто повторює один і той же код знову і знову, поки не буде виконано умову. Цикл "для" дозволяє нам це зробити, створивши змінну, встановивши умови, які ми хочемо задовольнити, а потім працюючи над нею - всі визначені у дужках:

за (int months = 0; місяців <100; місяців ++) {// Зробити щось}

Отже, ми створюємо ціле число, що називається місяцями, і циклічно, поки воно не дорівнює 100. Потім збільшуємо кількість місяців на одиницю.

Хочете подивитися, як це може стати послідовністю Фібоначчі? Ось:

простір імен ConsoleApp2 {class Program {static void Main (string args) {Список RabbitList = новий список(); RabbitList.Add (новий Rabbit ("Jeff", "brown", 0, 1)); RabbitList.Add (новий кролик («Сем», «білий», 0, 1)); для (int місяців = 0; місяців <10; місяців ++) {int firstRabbit = 0; int timesToReproduce = 0; foreach (var Rabbit in RabbitList) {Console.Write ("R"); якщо (Rabbit.RabbitAge> 0) {if (firstRabbit == 0) {firstRabbit = 1; } else {firstRabbit = 0; timesToReproduce ++; }} Кролик.РабітAge ++; } для (int i = 0; i <timesToReproduce; i ++) {RabbitList.Add (новий кролик ("NewBabyRabbit", "коричневий", 0, 1)); RabbitList.Add (новий Rabbit ("NewBabyRabbit", "коричневий", 0, 1)); Console.Write ("r"); Console.Write ("r"); } Console.WriteLine ("--- Є" + RabbitList.Count / 2 + "пари кроликів!"); Console.WriteLine (""); } Console.WriteLine ("Все готово!"); Console.ReadKey (); }}}

Гаразд, це було важче, ніж я думав!

Я не збираюся проходити все це, але, використовуючи те, що ви вже дізналися, ви повинні мати змогу змінити його.

Однозначно є більш елегантні способи зробити це - я не математик. Однак я думаю, що це вправа досить весела, і як тільки ти зможеш це зробити, ти готовий до великого часу.

Я хотів би, до речі, бачити будь-які інші підходи!

Куди ми підемо звідси? Як дізнатися C # для Android

Маючи всі свої знання під поясом, ви готові розпочати великі справи. Зокрема, ви готові зафіксувати програму Android на C # в Xamarin або Unity.

Це відрізняється тим, що ви будете використовувати класи, надані Google, Microsoft та Unity. Коли ви пишете щось на кшталт "RigidBody2D.velocity", ви робите доступ до ресурсу з класу називається RigidBody2D. Це працює точно так само, різниця полягає лише в тому, що ви не можете бачити RigidBody2D, оскільки ви не створили його самостійно.

З цим C # під поясом, ви повинні бути готові перейти до будь-якого з цих варіантів і мати великий початок, коли потрібно зрозуміти, що відбувається:

  • Як зробити додаток для Android з Xamarin
  • Створіть свою першу гру для Android за 7 хвилин за допомогою Unity

На наступному уроці ми також розглянемо, як ви можете зробити поворот і використовувати це для того, щоб створювати додатки для Windows!

Nintendo witch Online трохи дешевше - 20 доларів на рік, але вам доведеться доплачувати, щоб грати з друзями в Інтернеті. Це просто стандартна практика для консолей, і більшість геймерів оплачують вит...

Один із свербіж, який намагається подолати Google tadia, - це гнучкість. Давно минули дні, коли людям потрібно вкласти фінансові вкладення в обладнання, щоб випробувати новітні та найкращі відеоігри. ...

Публікації