Научете C # за Android, част 2: Класове и контури

Автор: John Stephens
Дата На Създаване: 24 Януари 2021
Дата На Актуализиране: 1 Юли 2024
Anonim
Прохождение Little Nightmares 2 — Часть 2: Школа
Видео: Прохождение Little Nightmares 2 — Часть 2: Школа

Съдържание


В първа част от тази серия уроци за Android за изучаване на C # разгледахме абсолютните основи на C # програмирането. Ние покрихме методите (групи от кодове, които изпълняват конкретни задачи), някои основни синтаксиси (като нуждата от полу-колони), променливи (контейнери, които съхраняват данни) и "ако оператори" за контрол на потока (разклоняващ код, който зависи от стойностите на променливи). Видяхме също как да предаваме променливи като низове като аргументи между методите.

Трябва да се върнете и да го погледнете, ако още не сте го прочели.

На този етап би трябвало да можете да направите някои основни конзолни приложения, като викторини, приложения, които съхраняват данни или калкулатори.

В част втора ще станем малко по-амбициозни, обхващайки още някои основи - като бримки - и проучваме как да създаваме и взаимодействаме с класове. Това означава, че ще бъдем в състояние да започнем да пробиваме в Android разработката и да видим как да преодолеем тази разлика. Продължете да четете, ако искате наистина да научите C #!


Разбиране на класове и обектно ориентирано програмиране

Накратко в първа част обяснихме основите на обектно-ориентираното програмиране, което се върти около езици, използвайки „класове“ за описване на „обекти“. Обектът е част от данните, която може да представлява много неща. Това може да бъде буквален обект в игровия свят като пролет или може да е нещо по-абстрактно, като мениджър, който обработва резултата на играча.

Един клас може да създаде множество обекти. Така че може да напишете един „враг“ клас, но да бъдете в състояние да генерирате цяло ниво, пълно с лоши момчета. Това е едно от големите предимства на използването на обектно ориентирано програмиране. В противен случай единственият начин да се справите с поведението на множество врагове би било използването на много индивидуални методи, всеки от които съдържа инструкции как трябва да се държи лошият човек при различни обстоятелства.


Ако това все още е малко сложно, за да заобиколите главата си, всичко, което наистина трябва да знаете, е, че обектите имат свойства и поведение. Това е точно като истински обекти. Например, заекът има свойства като размер, цвят и име; и има поведения, като скачане, седене и хранене. По същество свойствата са променливи, а поведението е метод.

Програмата, която изградихме в последния урок, е пример и за клас. „Обектът“, който описваме тук, е някаква система за контрол на паролата. Свойството, което има, е низът UserName, а поведението, което има, е NewMethod (проверява името на потребителя и ги поздравява).

Ако това евсе още малко объркващо, единственият начин да заобиколим главата си е да създадем нов клас или два сами!

Създаване на нов клас

Ако ще научите C #, трябва да знаете как да правите нови класове. За щастие това е много лесно. Просто щракнете върху елемента от менюто Project и след това изберете „+ Add Class.“

Изберете „C #“ и го наречете „Заек“. Ще използваме този клас за създаване на концептуални зайци. След миг ще видите какво имам предвид

Ако влезете в своя Explorer Explorer вдясно, ще видите, че точно под Program.cs е създаден нов файл, наречен Rabbit.cs. Добре направено - това е едно от най-важните неща, които трябва да знаете, ако искате да научите C # за Android!

Новият файл Rabbit.cs има някои от същия този код на котлона като преди. Тя все още принадлежи към същото пространство на имена и има клас със същото име като файла.

пространство за имена ConsoleApp2 {class Rabbit {}}

Сега ще дадем на нашия заек някои свойства с това, което наричаме „конструктор“.

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

пространство на имена ConsoleApp2 {class Rabbit {обществен низ RabbitName; публичен низ RabbitColor; public int RabbitAge; public int RabbitWeight; обществен заек (име на струна, цвят на струната, възраст на инт, тегло на инта) {RabbitName = име; RabbitColor = цвят; RabbitAge = възраст; RabbitWeight = тегло; }}}

Това ни позволява да създадем нов заек от различен клас и да определим свойствата му както ние:

Заешки заек1 = нов заек („Джеф“, „кафяв“, 1, 1);

Сега осъзнавам, че в ретроспективна тежест вероятно е трябвало да е поплавък или двойник, за да позволяват десетични знаци, но разбирате. Ще заобиколим заека си до най-близкото цяло число.

Ще видите, докато изписвате заека си, ще бъдете подканени да предадете правилните аргументи. По този начин класът ви почти се е превърнал в част от кода.

Вярвате или не, този код е създал заек! Не можете да видите вашия заек, защото нямаме графика, но е там.

И за да го докажете, сега можете да използвате този ред:

Console.WriteLine (Rabbit1.RabbitName);

След това ще ви каже името на заека, който току-що сте създали!

Можем също така да увеличим теглото на нашия Заек, така:

Rabbit1.RabbitWeight ++; Console.WriteLine (Rabbit1.RabbitName + "тежи" + Rabbit1.RabbitWeight + "kg");

Имайте предвид, че добавянето на „++“ в края на нещо ще увеличи постепенно стойността му с едно (Можете също така да напишете „RabbitWeight = RabbitWeight + 1“).

Тъй като нашият клас може да направи толкова зайци, колкото ни харесва, можем да създадем много различни зайци, всеки със собствени свойства.

Добавяне на поведение

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

За да направим това, ние ще създадем публичен метод, наречен "Яжте", и това би издавало звук на хранене, като същевременно увеличава теглото на заека:

обществена невалидност Eat () {Console.WriteLine (RabbitName + ": Nibble nibble!"); RabbitWeight ++; }

Не забравяйте, че „public“ означава достъпно извън класа, а „void“ означава, че методът не връща никакви данни.

След това, от Program.cs, ние ще можем да наречем този метод и това ще накара заека по наш избор да се храни и да стане по-голям:

Console.WriteLine (Rabbit1.RabbitName + "тежи" + Rabbit1.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "тежи" + Rabbit1.RabbitWeight + "kg");

Това ще накара Джеф да яде три пъти, тогава ще го чуем и ще можем да видим, че е станал по-голям! Ако имахме друг заек на сцената, те също биха могли да се хранят!

Console.WriteLine (Rabbit1.RabbitName + "тежи" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "тежи" + Rabbit2.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit2.Eat (); Rabbit2.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "тежи" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "тежи" + Rabbit2.RabbitWeight + "kg");

На него като зайци

Това не е особено елегантен начин да боравим с много предмети, тъй като трябва да изписваме командите за всеки заек ръчно и не можем динамично да увеличаваме броя зайци, доколкото искаме. Ние не искаме просто да научим C # - искаме да научим как да пишем чист C # код!

Ето защо може да използваме списък. Списък е колекция; самата променлива, която основно съдържа препратки към други променливи. В този случай може да направим списък на Зайци и добрата новина е, че това е много лесно да се разбере:

списък RabbitList = нов списък(); RabbitList.Add (нов заек ("Jeff", "кафяв", 1, 1)); RabbitList.Add (нов заек („Сам“, „бял“, 1, 2));

Това създава новия заек както преди, но едновременно добавя заека в списъка. Също така бихме могли да кажем това:

Rabbit Rabbit3 = нов заек („Джони“, „оранжев“, 1, 1); RabbitList.Add (Rabbit3);

Така или иначе, обект е създаден и добавен към списъка.

Също така можем удобно и елегантно да върнем информация от нашия списък на зайци по този начин:

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

Както може да успеете да разберете, „foreach“ означава да повторите стъпка веднъж за всеки елемент от списъка. Можете също да извлечете информация от списъка си по този начин:

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 (нов заек ("Jeff", "кафяв", 0, 1)); RabbitList.Add (нов заек („Сам“, „бял“, 0, 1)); за (int months = 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 ++; }} Rabbit.RabbitAge ++; } за (int i = 0; i <timesToReproduce; i ++) {RabbitList.Add (нов заек ("NewBabyRabbit", "кафяв", 0, 1)); RabbitList.Add (нов заек („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 вместо това!

Днес най-голямата френска агенция за поверителност на данни, известна като CNIL, издаде първото голямо наказание срещу американска компания за нарушаване на строгите нови европейски закони за поверите...

Update: Google официално обяви Google tadia, своята услуга за стрийминг на игри. Всички подробности имаме тук!Днес ще има основна бележка на Google GDC 2019, където вероятно гигантът за търсене ще пус...

Очарователно