Μάθετε C # για Android μέρος 2: Μαθήματα και βρόχους

Συγγραφέας: John Stephens
Ημερομηνία Δημιουργίας: 24 Ιανουάριος 2021
Ημερομηνία Ενημέρωσης: 1 Ιούλιος 2024
Anonim
Head Ball 2 Tips | Head Ball 2 Match | Head Ball 2 Game Play | Head Ball 2 Flash Punk
Βίντεο: Head Ball 2 Tips | Head Ball 2 Match | Head Ball 2 Game Play | Head Ball 2 Flash Punk

Περιεχόμενο


Στο πρώτο μέρος αυτής της σειράς μαθημάτων Android σχετικά με την εκμάθηση του C #, εξετάσαμε τα απόλυτα βασικά του προγραμματισμού C #. Καλύψαμε μεθόδους (ομάδες κώδικα που εκτελούν συγκεκριμένες εργασίες), κάποια βασική σύνταξη (όπως η ανάγκη για ημίξηρα), μεταβλητές (περιέκτες που αποθηκεύουν δεδομένα) και "εάν δηλώσεις" για έλεγχο ροής (κώδικας διακλάδωσης που εξαρτάται από τις τιμές μεταβλητών). Είδαμε επίσης να μεταφέρουμε μεταβλητές όπως συμβολοσειρές ως επιχειρήματα μεταξύ μεθόδων.

Πρέπει να επιστρέψετε και να ρίξετε μια ματιά σε αυτό αν δεν το έχετε διαβάσει ήδη.

Σε αυτό το σημείο, θα πρέπει να μπορείτε να πραγματοποιήσετε μερικές βασικές εφαρμογές κονσόλας, όπως κουίζ, εφαρμογές που αποθηκεύουν δεδομένα ή αριθμομηχανές.

Στο δεύτερο μέρος, θα πάμε λίγο πιο φιλόδοξοι, καλύπτοντας μερικά ακόμα βασικά - όπως βρόχους - και διερευνώντας πώς να δημιουργήσετε και να αλληλεπιδράσετε με τις τάξεις. Αυτό σημαίνει ότι θα είμαστε σε θέση να αρχίσουμε να κάνουμε ένα μαχαίρι στην ανάπτυξη Android και να δούμε πώς να γεφυρώσουμε αυτό το κενό. Συνεχίστε να διαβάζετε αν θέλετε να μάθετε πραγματικά το C #!


Κατανόηση τάξεων και αντικειμενοστρεφής προγραμματισμός

Εν συντομία στο πρώτο μέρος εξηγήσαμε τα βασικά του αντικειμενοστρεφούς προγραμματισμού, το οποίο περιστρέφεται γύρω από τις γλώσσες που χρησιμοποιούν "τάξεις" για να περιγράψουν τα "αντικείμενα". Ένα αντικείμενο είναι ένα κομμάτι δεδομένων που μπορεί να αντιπροσωπεύει πολλά πράγματα. Θα μπορούσε να είναι ένα κυριολεκτικό αντικείμενο σε έναν κόσμο παιχνιδιών σαν μια πηγή, ή θα μπορούσε να είναι κάτι πιο αφηρημένο, σαν ένας διαχειριστής που χειρίζεται το σκορ του παίκτη.

Μια μοναδική κλάση μπορεί να δημιουργήσει πολλαπλά αντικείμενα. Έτσι μπορείτε να γράψετε μια τάξη "εχθρού", αλλά να είστε σε θέση να δημιουργήσετε ένα ολόκληρο επίπεδο γεμάτο κακούς. Αυτό είναι ένα από τα μεγάλα οφέλη της χρήσης αντικειμενοστρεφούς προγραμματισμού. Διαφορετικά, ο μόνος τρόπος για να χειριστείς τη συμπεριφορά πολλών εχθρών θα ήταν να χρησιμοποιήσεις πολλές μεμονωμένες μεθόδους, καθένα από τις οποίες περιέχει οδηγίες για το πώς θα έπρεπε να συμπεριφέρεται ο κακός σε διάφορες περιστάσεις.


Εάν αυτό εξακολουθεί να είναι λίγο δύσκολο να πάρει το κεφάλι σας γύρω, το μόνο που πραγματικά πρέπει να ξέρετε είναι ότι τα αντικείμενα έχουν ιδιότητες και συμπεριφορές. Αυτό είναι ακριβώς όπως πραγματικά αντικείμενα. Για παράδειγμα, ένα κουνέλι έχει ιδιότητες όπως μέγεθος, χρώμα και όνομα. και έχει συμπεριφορές, όπως το άλμα, το κάθισμα και το φαγητό. Ουσιαστικά, οι ιδιότητες είναι μεταβλητές και οι συμπεριφορές είναι μέθοδοι.

Το πρόγραμμα που χτίσαμε στο τελευταίο μάθημα είναι ένα παράδειγμα μιας τάξης. Το "αντικείμενο" που περιγράφουμε εδώ είναι κάποιο είδος συστήματος ελέγχου κωδικού πρόσβασης. Η ιδιότητα που έχει είναι η συμβολοσειρά UserName και η συμπεριφορά που έχει είναι το NewMethod (έλεγχος του ονόματος του χρήστη και χαιρετισμός του).

Αν αυτό συμβαίνειακόμη λίγο μπερδεμένος, ο μόνος τρόπος για να βγάλουμε τα κεφάλια μας είναι να δημιουργήσουμε μια νέα τάξη ή δύο εμάς!

Δημιουργία νέας κλάσης

Εάν πρόκειται να μάθετε C #, πρέπει να ξέρετε πώς να κάνετε νέες τάξεις. Ευτυχώς, αυτό είναι πολύ εύκολο. Απλά κάντε κλικ στο στοιχείο μενού Project και, στη συνέχεια, επιλέξτε "+ Add Class."

Επιλέξτε "C #" και ονομάστε "Κουνέλι". Θα χρησιμοποιήσουμε αυτή την τάξη για να δημιουργήσουμε εννοιολογικά κουνέλια. Θα δείτε τι εννοώ σε μια στιγμή.

Αν ελέγξετε το Explorer Solution στα δεξιά, θα δείτε ότι ένα νέο αρχείο που ονομάζεται Rabbit.cs έχει δημιουργηθεί ακριβώς κάτω από το Program.cs. Καλά γίνει - αυτό είναι ένα από τα πιο κρίσιμα πράγματα για να ξέρετε αν θέλετε να μάθετε C # για το Android!

Το νέο αρχείο Rabbit.cs έχει μερικούς από τους ίδιους κώδικες "boilerplate" όπως και πριν. Εξακολουθεί να ανήκει στον ίδιο χώρο ονομάτων και έχει μια κλάση με το ίδιο όνομα με το αρχείο.

όνομα χώρου ConsoleApp2 {class Rabbit {}}

Τώρα θα δώσουμε στο κουνέλι μας κάποιες ιδιότητες με αυτό που ονομάζουμε "κατασκευαστής".

Ένας κατασκευαστής είναι μια μέθοδος σε μια κλάση που προετοιμάζει το αντικείμενο, επιτρέποντάς μας να ορίσουμε τις ιδιότητές του όταν την δημιουργούμε για πρώτη φορά. Σε αυτή την περίπτωση, εδώ πρόκειται να πούμε:

namespace ConsoleApp2 {τάξη Κουνέλι {δημόσιο συμβολοσειρά RabbitName; δημόσια συμβολοσειρά RabbitColor; δημόσιο int RabbitAge; δημόσιο int RabbitWeight; δημόσιο κουνέλι (όνομα συμβολοσειράς, χρώμα συμβολοσειράς, int age, int βάρος) {RabbitName = όνομα; RabbitColor = χρώμα. RabbitAge = ηλικία; RabbitWeight = βάρος; }}}

Αυτό μας επιτρέπει να δημιουργήσουμε ένα νέο κουνέλι από διαφορετική τάξη και να ορίσουμε τις ιδιότητές του όπως κάνουμε:

Rabbit Rabbit1 = νέο Κουνέλι ("Jeff", "καφέ", 1, 1).

Τώρα συνειδητοποιώ αναδρομικά το βάρος θα έπρεπε πιθανότατα να ήταν ένα πλωτήρα ή ένα διπλό για να επιτρέψει δεκαδικά, αλλά παίρνετε την ιδέα. Πρόκειται να στρέψουμε το κουνέλι μας στον πλησιέστερο ακέραιο αριθμό.

Θα δείτε καθώς γράφετε το κουνέλι σας, θα σας ζητηθεί να περάσετε τα σωστά επιχειρήματα. Με αυτόν τον τρόπο, η τάξη σας έχει γίνει σχεδόν μέρος του κώδικα.

Πιστέψτε το ή όχι, αυτός ο κώδικας έχει δημιουργήσει ένα κουνέλι! Δεν μπορείτε να δείτε το κουνέλι σας επειδή δεν διαθέτουμε γραφικά, αλλά είναι εκεί.

Και για να το αποδείξετε, μπορείτε τώρα να χρησιμοποιήσετε αυτήν τη γραμμή:

Console.WriteLine (Rabbit1.RabbitName);

Αυτό θα σας πει τότε το όνομα του κουνελιού που μόλις δημιουργήσατε!

Μπορούμε, επίσης, να αυξήσουμε το βάρος του Κουνελιού μας, όπως και έτσι:

Rabbit1.RabbitWeight ++; Console.WriteLine (Rabbit1.RabbitName + "ζυγίζει" + Rabbit1.RabbitWeight + "kg");

Σημειώστε ότι η προσθήκη "++" στο τέλος ενός στοιχείου θα αυξήσει προοδευτικά την αξία του κατά μία (Θα μπορούσατε επίσης να γράψετε "RabbitWeight = RabbitWeight + 1").

Επειδή η τάξη μας μπορεί να κάνει τόσα κουνέλια όπως μας αρέσει, μπορούμε να δημιουργήσουμε πολλά διαφορετικά κουνέλια, το καθένα με τις δικές του ιδιότητες.

Προσθήκη συμπεριφορών

Μπορούμε επίσης να επιλέξουμε να δώσουμε στο κουνέλι μας κάποια συμπεριφορά. Σε αυτή την περίπτωση, ας τους αφήσουμε να φάνε.

Για να γίνει αυτό, θα δημιουργούσαμε μια δημόσια μέθοδο που ονομάζεται "φάτε", και αυτό θα έκανε έναν ήχο τρώει, αυξάνοντας επίσης σταδιακά το βάρος του κουνελιού:

Δημόσια άκυρη Φάτε () {Console.WriteLine (RabbitName + ": Nibble nibble!"); RabbitWeight ++; }}

Θυμηθείτε ότι το "δημόσιο" σημαίνει πρόσβαση από το εξωτερικό της τάξης και το "άκυρο" σημαίνει ότι η μέθοδος δεν επιστρέφει δεδομένα.

Στη συνέχεια, από το εσωτερικό του 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 (νέο κουνέλι ("Sam", "λευκό", 1, 2))?

Αυτό δημιουργεί το νέο κουνέλι όπως πριν, αλλά ταυτόχρονα προσθέτει το κουνέλι στη λίστα. Ομοίως, θα μπορούσαμε να πούμε αυτό:

Rabbit Rabbit3 = νέο Κουνέλι ("Jonny", "πορτοκαλί", 1, 1). RabbitList.Add (Κουνέλι3);

Είτε έτσι είτε αλλιώς, ένα αντικείμενο έχει δημιουργηθεί και προστεθεί στη λίστα.

Μπορούμε επίσης να επιστρέψουμε με ευκολία και κομψότητα τις πληροφορίες από τη λίστα κουνελιών μας με αυτό τον τρόπο:

foreach (κουνέλι Rab στο RabbitList) {Console.WriteLine (Rabbit.RabbitName + "ζυγίζει" + Rabbit.RabbitWeight + "kg")? }}

Όπως ίσως μπορέσετε να καταλάβετε, το "foreach" σημαίνει ότι επαναλαμβάνετε ένα βήμα μία φορά για κάθε στοιχείο της λίστας. Μπορείτε επίσης να ανακτήσετε πληροφορίες από τη λίστα σας όπως αυτή:

RabbitList.Eat ();

Εδώ "1" είναι ο δείκτης, που σημαίνει ότι αναφέρεστε στις πληροφορίες που είναι αποθηκευμένες στη θέση ένα. Όπως συμβαίνει, αυτό είναι στην πραγματικότητα το δεύτερος κουνέλι που προσθέσατε εν τούτοις: επειδή οι λίστες στον προγραμματισμό αρχίζουν πάντα στο 0.

Fibonacci

Σε περίπτωση που δεν είχατε υποθέσει ακόμα, τώρα θα χρησιμοποιήσουμε όλες αυτές τις πληροφορίες για να δημιουργήσουμε μια ακολουθία Fibonacci. Μετά από όλα, Αν μάθετε C # για το Android, θα πρέπει να μπορείτε να κάνετε πραγματικά κάτι ενδιαφέρον με όλη αυτή τη θεωρία!

Στην αλληλουχία του Fibonacci, τα κουνέλια κλείνονται σε ένα δωμάτιο και αφήνονται για αναπαραγωγή. Μπορούν να αναπαραχθούν μετά από ένα μήνα, σε αυτό το σημείο είναι σεξουαλικά ώριμοι (δεν μπορώ να επιβεβαιώσω αν αυτό είναι σωστό βιολογία κουνελιών). Εάν κάθε ζευγάρι κουνελιών μπορεί να παράγει μία φορά το μήνα από τότε, παράγουν δύο απογόνους, εδώ είναι η σειρά που μοιάζει με:

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

Με μαγικό τρόπο, κάθε αριθμός στην ακολουθία είναι η τιμή των δύο προηγουμένων αριθμών που προστίθενται μαζί. Σύμφωνα με την επιστήμη, αυτό είναι ένα μεγάλο θέμα.

Το δροσερό πράγμα είναι ότι μπορούμε να το αντιγράψουμε.

Πρώτον, πρέπει να εισαγάγουμε μια νέα έννοια: τον βρόχο. Αυτό απλώς επαναλαμβάνει τον ίδιο κωδικό ξανά και ξανά μέχρι να τηρηθεί μια προϋπόθεση. Ο βρόχος "για" μας επιτρέπει να το κάνουμε αυτό δημιουργώντας μια μεταβλητή, καθορίζοντας τις συνθήκες που θέλουμε να συναντήσουμε και στη συνέχεια λειτουργώντας σε αυτό - όλες που ορίζονται εντός παρενθέσεων:

για (μήνες int = 0, μήνες <100, μήνες ++) {// Κάνε κάτι}

Έτσι δημιουργούμε έναν ακέραιο που ονομάζεται μήνες, και βρόχο μέχρι να είναι ίσο με 100. Στη συνέχεια, αυξάνουμε τον αριθμό των μηνών κατά ένα.

Θέλετε να δείτε πώς μπορεί να γίνει μια ακολουθία Fibonacci; Βλέπω:

όνομα χώρου ConsoleApp2 {πρόγραμμα κατηγορίας {static void Κύριο (string args) {Λίστα RabbitList = νέα λίστα(). RabbitList.Add (νέο κουνέλι ("Jeff", "καφέ", 0, 1))? RabbitList.Add (νέο κουνέλι ("Sam", "λευκό", 0, 1))? για (μήνες int = 0, μήνες <10, μήνες ++) {int firstRabbit = 0; int timesToReproduce = 0; foreach (var Rabbit σε RabbitList) {Console.Write ("R"); αν (Rabbit.RabbitAge> 0) {if (firstRabbit == 0) {firstRabbit = 1; } άλλο {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

Σε ένα επερχόμενο μάθημα, θα εξετάσουμε επίσης τον τρόπο με τον οποίο μπορείτε να χρησιμοποιήσετε ένα turn-turn και να το χρησιμοποιήσετε για να δημιουργήσετε εφαρμογές των Windows αντί!

Η Huawei είναι ήδη ο ηγέτης στην ανάπτυξη 5G, στέλνοντας περισσότερους από 200.000 σταθμούς βάσης με δυνατότητα 5G παγκοσμίως. Τώρα, ο διευθύνων σύμβουλος της Huawei Ren Zhengfei λέει ότι η εταιρεία π...

Δεν είναι μυστικό ότι οι αμερικανικές εμπορικές κυρώσεις που επηρεάζουν την Huawei χτυπάνε σκληρά. Το κατά τα άλλα εξαιρετικό Huawei Mate 30 Pro δεν έχει ακόμη κάνει μια δυτική εμφάνιση, εξαιτίας της ...

Διαβάστε Σήμερα