Δημιουργία στρατηγικής από την αρχή - ένας λεπτομερής οδηγός. Έξυπνος ή ηλίθιος πελάτης; Δημιουργήστε μια στρατηγική βασισμένη σε στροφές

θεματικό πάρκο:
Θα χρειαστούμε:
κτιριακό ξωτικό
sprite μενού
Sprites διαφόρων κουμπιών όπως:
srite με την επιγραφή (κατασκευή, κατασκευή, κατασκευή κ.λπ.)
ένα παράθυρο που εμφανίζεται
σχέδιο κτιρίου,
1) Θα προσθέσουμε τα υπόλοιπα μόνοι μας
2) η λέξη πλαστό - δημιούργησα μόνος μου, γιατί Θα χρειαστεί να το ψεύτικουμε για να ταιριάζει με την πηγή μας)
Ας ξεκινήσουμε:
1) δημιουργήστε όλα όσα είναι γραμμένα στο σημείο I εκτός από το 1)
Ας δημιουργήσουμε μια καθολική μεταβλητή που ονομάζεται χρήματα, ορίζουμε οποιοδήποτε αρχικό ποσό χρημάτων
Θα δημιουργήσουμε επίσης ένα αντικείμενο ποντικιού και πληκτρολογίου
Ας δημιουργήσουμε ένα κείμενο, ας το ονομάσουμε πληροφορίες, δημιουργήστε ένα πάντα συμβάν και δημιουργήστε μια ενέργεια σε αυτό:
επιλέξτε πληροφορίες στην επιλογή δράσης επιλέξτε σύνολο κειμένου στο κείμενο γράψτε αυτό:
"Χρήματα:" & ("Global (" χρήματα ".
2) προσθέστε ένα μενού, το κύριο καθήκον του μενού δεν είναι να παρεμβαίνει, αλλά να βοηθά τον παίκτη να πλοηγηθεί (πώς μπορεί να παρεμβαίνει; - είναι εύκολο αν το τοποθετήσετε στη μέση του παιχνιδιού), πριν δημιουργήσετε το μενού, Θα δημιουργήσουμε ένα νέο επίπεδο, το οποίο θα ονομάσουμε μενού, στις αναλογίες του (ρυθμίσεις, επιλογές) στο στοιχείο εμφάνισης που γράφουμε:


θα προσθέσουμε ένα sprite σε αυτό και θα πάρουμε την εικόνα του μενού που ήταν στα υλικά προπαραγωγής (σημείο I) και θα τοποθετήσουμε το μενού μας σε ένα απομονωμένο μέρος όπου δεν θα παρεμβαίνει, αλλά θα είναι ορατό στην οθόνη
Ας τοποθετήσουμε επίσης ένα κουμπί από υλικά προ-φινιρίσματος (σημείο I) με την επιγραφή BUILD (ή κάτι τέτοιο)
ας το βάλουμε στο μενού
Τώρα μεταβείτε στον επεξεργαστή φύλλων εκδηλώσεων
δημιουργήστε ένα συμβάν (#μπλα μπλα μπλα# - αυτό είναι το μήνυμά μου (εξήγηση) προς εσάς μόνο αντί για μπλα μπλα μπλα θα υπάρχει το σχόλιό μου για εσάς· >> - δράση; ll - διαίρεση των παραθύρων για παράδειγμα:

ποντίκι&πληκτρολόγιο ll στο αντικείμενο κλικ ll αριστερό κλικ για να γίνει αντικείμενο #κουμπί μενού σας με την επιγραφή BUILD (ή κάτι τέτοιο)##τα υπόλοιπα αργότερα (δείτε σημείο 3)#
3)τώρα το πιο δύσκολο κομμάτι(Το χωρίζω σε δύο σημεία για να μην είναι τόσο περίπλοκο)
δημιουργήστε ένα sprite από υλικά προ-τελικής επεξεργασίας "ένα παράθυρο που θα εμφανιστεί"
Στη συνέχεια, δημιουργούμε ένα κενό sprite που ονομάζεται p1, μετακινούμε το παράθυρο από την οθόνη και βάζουμε το p1 στο σημείο όπου πρέπει να εμφανίζεται το παράθυρό σας όταν πατάτε το κουμπί δημιουργίας (ή κάτι τέτοιο CHVER)
Υπέροχο!
Ας γράψουμε το ημιτελές γεγονός μέχρι το τέλος:
Κείμενο θα ορίσει κείμενο ll μπλα-μπλα-μπλα)
Mouse & Keyboard LL στο αντικείμενο Κάντε κλικ στο αριστερό κλικ για να αντικείμενο #Your Menu Condition με την ετικέτα Build (ή κάτι τέτοιο) #>>
4)Το δεύτερο μέρος του πιο δύσκολου μέρους:
Ας δημιουργήσουμε ένα sprite όπου θα σχεδιαστεί η εικόνα του κτιρίου (προ-φινίρισμα υλικών), ας το ονομάσουμε H1
Ας δημιουργήσουμε ένα κενό sprite, το ονομάζουμε P2, τώρα τοποθετήστε το στον τόπο όπου το παράθυρο πρέπει να ανοίξει,
Ας δημιουργήσουμε ένα sprite, επίσης ένα παράθυρο (υλικά προ-τελικής επεξεργασίας), στο παράθυρο θα γράψουμε όμορφα το όνομα του κτιρίου, το κόστος και την περιγραφή του (προαιρετικά) και θα το ονομάσουμε i1
Ας δημιουργήσουμε ένα άλλο κενό sprite που ονομάζεται P3, τοποθετήστε το δίπλα στο P2, μόνο έτσι ώστε να αγγίζει μόνο το P2 με την επάνω αριστερή γωνία
Τώρα ας δημιουργήσουμε διάφορα γεγονότα, αλλά πρώτα κάνουμε την προηγούμενη εκδήλωση μια νέα δράση:
ποντίκι&πληκτρολόγιο ll στο αντικείμενο κλικ ll αριστερό κλικ για αντικείμενο #το κουμπί του μενού σας με την επιγραφή BUILD (ή κάτι τέτοιο)#>> σύστημα θα δημιουργήσει αντικείμενο σε σχέση με το αντικείμενο ll #παράθυρό σας# #αριθμός επιπέδου κάτω από το μενού ονόματος# # X ;Y-μην αλλάξετε# σε αντικείμενο p1
>> sistem ll Δημιουργία αντικειμένου Σχετικά με το αντικείμενο ll # your δεύτερο παράθυρο # #layer αριθμός κάτω από το μενού Όνομα # #x; y-do δεν αλλάζει # στο αντικείμενο p2
Πρέπει επίσης να του επιστρέψουμε μια εκδήλωση:
αντιγράψτε το συμβάν και αντιστρέψτε το
νέο γεγονός
ποντίκι&πληκτρολόγιο ll είναι πάνω από το αντικείμενο ll h1>>σύστημα θα δημιουργήσει αντικείμενο σε σχέση με το αντικείμενο ll i1 #αριθμός επιπέδου κάτω από το μενού ονόματος# #X;Y-do not change# σε αντικείμενο p3
Ας φτιάξουμε ένα ξωτικό με ένα κτίριο (χρησιμοποιήστε υλικά προπαραγωγής) και ας το πούμε σπίτι
Ας δημιουργήσουμε ένα παράθυρο όπου θα εμφανιστούν τα κτίριά μας όταν επιλέγονται στο μενού, καλέστε το RLO
εκδηλώσεις:
ποντίκι&πληκτρολόγιο ll στο αντικείμενο κλικ ll αριστερό κλικ στο h1>>σύστημα θα δημιουργήσει σε αντικείμενο σε σχέση με αντικείμενο ll σπίτι #αριθμός επιπέδου κάτω από το μενού ονόματος# #X;Y-do not change# σε αντικείμενο rlo
>> σύστημα θα αφαιρέσει από την αξία ll #ποσό χρημάτων που πρέπει να αφαιρεθεί κατά την κατασκευή#
Τώρα ήταν αδύνατο να χτιστεί μια εκδήλωση
Θα σας πω την προηγούμενη μέθοδο απαγόρευσής μου (όταν τελειώσω το γράψιμο, θα εξερευνήσω μια άλλη μέθοδο που με έκανε μπλε όταν θυμήθηκα τον κόσμο του θεματικού πάρκου του παιχνιδιού)
εκδηλώσεις:
σπίτι ll σε σύγκρουση με άλλο αντικείμενο ll με σπίτι
>>Το σπίτι θα καταστραφεί
>> σύστημα θα αφαιρέσει από την αξία ll - #διπλασιάστε το χρηματικό ποσό που αφαιρέθηκε κατά την κατασκευή##σημείωση που πρέπει να βάλετε - ποσότητα#
βασικά τα πάντα.
III τι θέλω να πω:

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

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

θεματικό πάρκο:
Δεν ξέρω πώς να τραβήξω στιγμιότυπα οθόνης γεγονότων.

Λοιπόν, αυτό δεν είναι απαραίτητο.

IAMNP:
theme_park , υπάρχει ένα ειδικό κουμπί στο πληκτρολόγιο - PrintScreen

θεματικό πάρκο:
Ξέρω ότι μερικοί άνθρωποι το κάνουν διαφορετικά.Επιπλέον, ο καθένας έχει το δικό του sprite
και αν στήσω όλα αυτά τα sprites, λίγοι θα καταλάβουν.
Λοιπόν, ίσως κάποιος δώσει ένα συν; Δεν είναι περίεργο που δυσκολευόμουν;

Burlachenko:
Προκειμένου ένα τέτοιο μάθημα να ενδιαφέρει κανέναν, πρέπει να διαμορφωθεί ανάλογα, αλλά εδώ "ούτως ή άλλως ήταν".
Κι όμως, αν θέλετε, λίγο-λίγο, όταν έχετε χρόνο, παρακαλούμε να το «ομορφύνετε».

θεματικό πάρκο:
εντάξει, θα γυρίσω από το σχολείο και θα ετοιμαστώ.
ΥΣΤΕΡΟΓΡΑΦΟ. προστέθηκε πηγή

Serega Lebedev:

iamnp, πού πηγαίνουν αυτά τα στιγμιότυπα οθόνης αργότερα;

Kamikaza:

Στο πρόχειρο.
Πηγαίνετε σε οποιοδήποτε επεξεργαστής κειμένου, και εκτελέστε τη λειτουργία "Επικόλληση" ή πατήστε Ctrl+V.

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

Τι είναι λοιπόν turn based παιχνίδι? Ο παρακάτω ορισμός μπορεί να βρεθεί στη Wikipedia στρατηγική βασισμένη στη σειρά - είναι ένα είδος παιχνιδιών ηλεκτρονικών υπολογιστών του οποίου το κύριο χαρακτηριστικό είναι ότι οι παίκτες κάνουν εναλλάξ κινήσεις, σε αντίθεση με τη στρατηγική σε πραγματικό χρόνο. Θα απλοποιούσα λίγο αυτόν τον ορισμό:

  • Βήμα-βήμα στρατηγική - είναι ένα παιχνίδι στρατηγικής που βασίζεται στη σειρά.
  • Παιχνίδι στρατηγικής - Αυτό είναι ένα είδος παιχνιδιών στο οποίο το κλειδί για την επίτευξη της νίκης είναι ο σχεδιασμός και η στρατηγική σκέψη..
  • Παιχνίδι turn-based - είναι ένα είδος παιχνιδιών του οποίου το κύριο χαρακτηριστικό είναι ότι οι παίκτες κάνουν εναλλάξ κινήσεις.
Τα παιχνίδια σειράς περιλαμβάνουν:
  • Στρατηγικές που βασίζονται στη σειρά
  • Παιχνίδια με κάρτες
  • Επιτραπέζια παιχνίδια (σκάκι, go, μονοπώλιο κ.λπ.)
Σημειώνω ότι τα παιχνίδια turn-based επιβάλλουν λιγότερους περιορισμούς στην πολυπλοκότητα του πρωτοκόλλου αλληλεπίδρασης σε σύγκριση με τα παιχνίδια σε πραγματικό χρόνο. Και συγκεκριμένα, Ο χρόνος αντίδρασης σε ένα συγκεκριμένο γεγονός δεν παίζει βασικό ρόλο. Ο παίκτης έχει συνήθως 10 δευτερόλεπτα για να πάρει μια απόφαση. Ακόμα κι αν το ping είναι τεράστιο, ας πούμε 3 δευτερόλεπτα, τότε ο παίκτης έχει ακόμα 7 δευτερόλεπτα για να σκεφτεί. Επιπλέον, το ping μπορεί να πηδήξει και να πηδήξει, αλλά δεν μας ενδιαφέρει καθόλου αυτό (σε παιχνίδια σε πραγματικό χρόνο, αυτή η κατάσταση πρακτικά σκοτώνει οποιοδήποτε πρωτόκολλο).

Τυπικά (στο 95% των παιχνιδιών turn-based) ακριβώς ένας παίκτης παίρνει την απόφαση ανά πάσα στιγμή. Κατά συνέπεια, ο αριθμός των αιτημάτων στα οποία πρέπει να ανταποκριθούμε επαρκώς περιορίζεται.

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

Το παραπάνω σκεπτικό βασίζεται στη 2μηνη ανάπτυξη ενός συγκεκριμένου παιχνιδιού τράπουλας.

Έξυπνος ή ηλίθιος πελάτης;

Αρχικά, ας αποφασίσουμε πόσο «έξυπνος» μπορεί να είναι ο πελάτης μας. Συζητώ αν αξίζει να αντιγράψω τη λογική της εφαρμογής (κανόνες παιχνιδιού) στον πελάτη. Φυσικά, ο διακομιστής πρέπει να είναι έξυπνος για να αποτρέψει ενδεχόμενο hacking της εφαρμογής. Αξίζει όμως να διδάξουμε επιχειρηματική λογική στον πελάτη;

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

Από την άλλη, όσο πιο έξυπνος είναι ο πελάτης, τόσο πιο ακριβή θα είναι η ανάπτυξη του παιχνιδιού. Επιτρέψτε μου να σημειώσω ότι ο χρόνος ανάπτυξης διακομιστή δεν εξαρτάται σε καμία περίπτωση από τη γνώση του πελάτη. Ακόμα κι αν ο πελάτης είναι super-duper-mega smart, εάν ο χρήστης θέλει να φορτώσει ξανά το παράθυρο του προγράμματος περιήγησης, ο διακομιστής θα πρέπει να συλλέξει και να συγκεντρώσει όλα τα δεδομένα σχετικά με το παιχνίδι για να τα μεταφέρει στον πελάτη. A la "Φόρτωση αποθηκευμένου παιχνιδιού". Συμπέρασμα: Ένας έξυπνος πελάτης μπορεί να επιταχύνει μια εφαρμογή, αλλά θα απαιτεί πάντα πρόσθετους πόρους για την ανάπτυξη της εφαρμογής.

Προτείνω το εξής δοκιμή:

1. Το επιτρέπει η ένταση του καναλιού;

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

2. Είναι έντασης εργασίας;

Υπολογίστε την πολυπλοκότητα του αλγόριθμου συλλογής δεδομένων του παιχνιδιού (σε κλάσματα του δευτερολέπτου). Εδώ, λάβετε υπόψη όλα τα ερωτήματα στη βάση δεδομένων. Στη συνέχεια, πολλαπλασιάστε με τον μέσο αριθμό αιτημάτων στον διακομιστή ανά δευτερόλεπτο. Εάν ο χρόνος υπερβαίνει το ένα δευτερόλεπτο, τότε ένας ηλίθιος πελάτης είναι απαράδεκτος. Εάν αυτός ο αριθμός υπερβαίνει τα 200 ms, τότε θα πρέπει να σκεφτείτε αν θα διαρκέσει;

Συνέχιση:

Γεια σε όλους! Τώρα θα σας πω πώς να κάνετε ένα απλό RTS (RTS - Στρατηγική σε πραγματικό χρόνο, δηλαδή μια στρατηγική σε πραγματικό χρόνο) να ανοίξει μια αιώρα 8.1 (η λειτουργικότητα δεν είναι εγγυημένη στο 8.0) να δημιουργήσετε ένα αντικείμενο objControl, δηλαδή αυτό θα είναι κύριο αντικείμενο μας, δημιουργήστε ένα συμβάν δημιουργίας ( Δημιουργία) Προσθήκη συμβάντος => Δημιουργία (Προσθήκη συμβάντος => Δημιουργία) το συμβάν δημιουργίας γίνεται μόνο μία φορά - κατά τη δημιουργία, κάντε κλικ στην καρτέλα ελέγχου στα δεξιά κατακόρυφο μενούκαι κάντε δεξί κλικ στην Εκτέλεση κώδικα και γράψτε τον κώδικα (καλύτερα να μην αντιγράψετε τον κώδικα, αλλά να τον γράψετε μόνοι σας, είναι πολύ πιο εύκολο να θυμάστε):

200?"200px":""+(this.scrollHeight+5)+"px");">startx=0; //Δήλωση μιας μεταβλητής για το σημείο έναρξης του x
starty = 0; //Δηλώστε μια μεταβλητή για την αρχή του σημείου κατά y
draw_rect = false; //Μην σχεδιάζετε ένα ορθογώνιο επιλογής


Μεταβλητή: Ένα κομμάτι μνήμης που περιέχει πληροφορίες. Έχουν το δικό τους όνομα με το οποίο μπορείτε να επικοινωνήσετε μαζί τους. Οι μεταβλητές στο GML μπορούν να περιέχουν έναν πραγματικό αριθμό ή μια συμβολοσειρά. Για παράδειγμα, ένα τραπέζι είναι μια μεταβλητή, το ξύλινο ή το γυαλί είναι μια τιμή
Τώρα δημιουργούμε ένα συμβάν βήματος (Βήμα, Προσθήκη συμβάντος => Βήμα) και εκτελούμε ξανά τη λειτουργία (κάνουμε δεξί κλικ στο Εκτέλεση κώδικα):

200?"200px":""+(this.scrollHeight+5)+"px");">
if mouse_check_button_pressed(mb_left) //Εάν πατηθεί LMB
{
draw_rect = true; // Σχεδιάζουμε ένα ορθογώνιο
startx = mouse_x; //Έναρξη x θέση = ποντίκι x θέση
starty = mouse_y; //Θέση εκκίνησης = θέση ποντικιού
με όλα τα επιλεγμένα = ψευδή. //Αυτή δεν είναι ακόμη δηλωμένη μεταβλητή, θα μάθουμε τι θα κάνει αργότερα
}

Αν το mouse_check_button_released(mb_left) //Εάν το LMB απελευθερωθεί
{
draw_rect = false; //Δεν σχεδιάζουμε παραλληλόγραμμο
για(i=0;i<=instance_number(par);i+=1) //Читайте про цикл for ниже
{
II = instance_find (par, i); //Αναζητούμε ένα αντικείμενο που δεν έχει φτιαχτεί ακόμα
if(collision_rectangle(startx,starty,mouse_x,mouse_y,ii,true,false)) //Εδώ είναι το ορθογώνιο σύγκρουσης (επαφή)
{
ii.Selected = true;
}
}
}

Ο κώδικας είναι μεγάλος και πολύπλοκος ενώ μαθαίνουμε για την πρόταση υπό όρους if:
Ο κώδικας με το if εκτελείται ως εξής:

200?"200px":""+(this.scrollHeight+5)+"px");">
αν (κατάσταση)
{
δράση
}

Μπορεί επίσης να περιέχει μια άλλη δήλωση (αλλιώς), παράδειγμα:

200?"200px":""+(this.scrollHeight+5)+"px");">if (συνθήκη)
{
δράση
}
αλλού
{
δράση 2
}

Και for is ένας τελεστής βρόχου, εκτελείται ως εξής:

200?"200px":""+(this.scrollHeight+5)+"px");">
Για (<переменная> ; <выражение> ;<действие переменной>)
{
<действия>
}


Το for statement είναι πολύ δυνατό πράγμα, βοηθάει πολύ σε δύσκολες καταστάσεις

Operator - ενέργειες ενσωματωμένες σε μια γλώσσα, για παράδειγμα, οι πιο συνηθισμένες είναι int, if, else, string, switch, for, case, break, exit, κ.λπ., κ.λπ.

Τώρα δημιουργούμε επίσης ένα συμβάν σχεδίασης (σχήμα) και γράφουμε με τον ίδιο τρόπο:

200?"200px":""+(this.scrollHeight+5)+"px");">αν draw_rect=true
{
άλφα = .8;
draw_rectangle_color(startx,starty,mouse_x,mouse_y,c_green,c_green,c_green,c_green,true);
}

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

200?"200px":""+(this.scrollHeight+5)+"px");">draw_rectangle_color(x1,y1,x2,y2,color 1, color 2, color 3, color 4, outline)


περίγραμμα - εάν θα σχεδιαστεί μόνο η άκρη (αληθής) ή το γεμάτο ορθογώνιο (ψευδή)
Βρήκαμε μια νέα λέξη - σταθερά, αυτή είναι μια αριθμητική έκφραση ή κωδικός που αντικαταστάθηκε από μια λέξη, η αιώρα έχει ενσωματωμένες σταθερές:

200?"200px":""+(this.scrollHeight+5)+"px");">true - 1
False - 0
PI - 3.1415 ...


Λοιπόν, το καταλάβαμε, τώρα πρέπει να δημιουργήσουμε ένα νέο αντικείμενο - ένα γονικό αντικείμενο που θα συνδέεται με τα παιδιά του. Ας το ονομάσουμε par (για να αλλάξετε το όνομα πρέπει να αλλάξετε τον κώδικα στο συμβάν βήματος αντικειμένου ελέγχου), γράψτε στο συμβάν δημιουργίας:

200?"200px":""+(this.scrollHeight+5)+"px");">selected=false; //Εδώ είναι η μεταβλητή μας, είτε το αντικείμενο είναι επιλεγμένο

Αυτά είναι όλα. Τώρα, φυσικά, χρειαζόμαστε ένα αντικείμενο που μπορεί να κινηθεί, το ονομάζουμε objTest και γράφουμε τον κώδικα στο συμβάν δημιουργίας:

200?"200px":""+(this.scrollHeight+5)+"px");">gox=x; //Πού να πάτε...
Goy = y; // από y
Επιλεγμένο = ψευδές; // Δεν είμαστε επιλεγμένοι =)
object_set_parent(self,par) //Εδώ είναι η επιλογή του γονέα

Νέα δράση:

200?"200px":""+(this.scrollHeight+5)+"px");">object_set_parent(ind,obj)

Ορίζει το γονικό αντικείμενο στο αντικείμενο που ονομάζεται ind.
Και ένας νέος χειριστής: εαυτός, σημαίνει ότι η ενέργεια θα πάει στον εαυτό της
Μην φοβάστε, μένει λίγο ακόμα στο βήμα event:

200?"200px":""+(this.scrollHeight+5)+"px");">if distance_to_point(gox,goy) > 20
{
mp_potential_step(gox,goy,6,solid);
}
if(selected=true) && mouse_check_button_pressed(mb_right)
{
gox=ποντίκι_χ;
goy=ποντίκι_υ;

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

(A. Cuningham)

Στα δύο προηγούμενα τεύχη μάθαμε φτιάξτε απλά παιχνίδια 2D, ελέγξτε τα sprites, κάντε κύλιση στην οθόνη του παιχνιδιού, παρακολουθήστε συγκρούσεις αντικειμένων παιχνιδιού, δημιουργήστε μια διεπαφή (κουμπιά, ποντίκι, πληκτρολόγιο, περιοχές κειμένου) και εργαστείτε σε λειτουργίες πλήρους οθόνης και παραθύρων. Όλα αυτά έγιναν χρησιμοποιώντας ένα arcade παιχνίδι ως παράδειγμα.

Αυτή τη φορά θα περάσουμε από τα arcade παιχνίδια σε ένα πιο «σοβαρό» είδος - στρατηγικές. Εδώ θα πρέπει να κυριαρχήσουμε μια ολόκληρη σειρά νέων μηχανισμών, αλλά δεν θα υπάρχει τίποτα περίπλοκο και εδώ. Σε αυτό το άρθρο εμείς Ας μελετήσουμε τη δομή μιας στρατηγικής που βασίζεται στη σειρά(και επίσης στρατηγική σε πραγματικό χρόνο- είναι ακόμα πιο εύκολο να το κάνετε με το LKI-Creator) και θα φτιάξουμε ένα παιχνίδι ως παράδειγμα, σχεδιασμένο, ωστόσο, μόνο για πολλαπλών χρηστώνλειτουργία (και επίσης επεξεργαστής χάρτηγια εκείνη). Θα ασχοληθούμε με το single-player mode στο επόμενο τεύχος της στήλης μας - αφιερωμένο στο βασικά στοιχεία της τεχνητής νοημοσύνης.

Δεδομένου ότι αυτό είναι ήδη το τρίτο μάθημα, δεν θα μπούμε σε λεπτομέρειες όλαπαράδειγμα κώδικα - ευτυχώς, πολλά έχουν γίνει ακριβώς όπως και τις δύο προηγούμενες φορές. Για αναφορά, υπάρχει ένα παράδειγμα προγράμματος (υπάρχουν πολλά σχόλια σε αυτό) και προηγούμενα άρθρα.

Λοιπόν, μπορείτε να βρείτε τα υλικά από τα προηγούμενα μαθήματα μας στο δικό μας CD, στην ενότητα «Κάνε το μόνος σου παιχνίδι» που δημιουργήθηκε ειδικά για αυτό το σκοπό.

Διατύπωση του προβλήματος

Ας γράψουμε ένα παιχνίδι στρατηγικής που αποτελείται από μια μάχη μεταξύ δύο στρατών φαντασίας. Ο στόχος της μάχης είναι να συλλάβει αρκετούς οβελίσκοι, τοποθετείται στον χάρτη. Πριν από τη μάχη αναπτύσσουμε τα στρατεύματά μας, που αποτελούνται από 6 ξιφομάχοι, 4 τοξότες, 2 ιππότες, 2 μάγοικαι 1 φάντασμα, εντός της επικράτειας που μας έχει ανατεθεί. Εκτός από αυτά, στον χάρτη υπάρχουν και ουδέτερα δράκους.

Χαρακτηριστικά των μαχητών
Μαχητής Κίνηση Επιτυχίες Εύρος Βλάβη ΠΡΟΣΤΑΣΙΑ Δυνατότητες
Ξιφομάχος4 8 1 7 2 -
Τοξότης4 5 7 5 1 -
ιππότης3 15 1 9 4 Healing, Knight's Strike
Μάγος3 12 5 6 0 Μπάλα φωτιάς
Φάντασμα4 7 2 5 5 Αναγέννηση
Ο δράκος6 30 2 12 5 Πτήση

Τα χαρακτηριστικά των μαχητών παρουσιάζονται στον πίνακα. Θεραπεία- αυτό είναι το δικαίωμα να θεραπεύεις έναν γειτονικό πολεμιστή (εκτός από ένα φάντασμα) σε πλήρη υγεία μία φορά ανά μάχη. Knight's Strike- το δικαίωμα πρόκλησης τριπλής ζημιάς μία φορά ανά παιχνίδι. Μπάλα φωτιάς- η επίθεση του μάγου αφαιρεί τα σημεία χτυπήματος όχι μόνο από τον άμεσο στόχο, αλλά και από τα γύρω τετράγωνα. Αναγέννηση- ανάκτηση 1 χτυπήματος ανά στροφή. Πτήση- το δικαίωμα κίνησης πάνω από εμπόδια.

Το παιχνίδι παίζεται σε λειτουργία πολλών παικτών, στην έκδοση Hot Seat (παίζει από έναν υπολογιστή, γυρίζει ένας κάθε φορά). Αφού γυρίσουν οι παίκτες, ουδέτεροι δράκοι κάνουν τη σειρά τους, επιτίθενται σε οποιονδήποτε εχθρό σε ακτίνα 7 κελιών.

Το πάρτι τελειώνει όταν η μία πλευρά είτε συλλάβει περισσότερους από τους μισούς οβελίσκους που υπάρχουν στον χάρτη είτε πεθάνει εντελώς.

Ο χάρτης ορίστηκε αρχικά στο πρόγραμμα επεξεργασίας χαρτών. Υπάρχουν οβελίσκοι, δράκοι και εμπόδια (αντικείμενα μέσα από τα οποία δεν μπορείτε να κινηθείτε ή να επιτεθείτε).

Προετοιμασία για δουλειά

Πριν ξεκινήσουμε, θα χρειαστεί να εγκαταστήσουμε ξανά το πακέτο LKI-Δημιουργός. Γεγονός είναι ότι σε σχέση με την προηγούμενη φορά, έχουν γίνει πολλές αλλαγές και προσθήκες σε αυτό.

(Ελπιζω οτι Δελφοίέχετε ήδη εγκαταστήσει? αν όχι, τότε διαβάστε συστάσεις για αυτό το θέμα στο προηγούμενο άρθρο μας - στο τεύχος Ιουνίου του περιοδικού ή στο CD αυτού του τεύχους ή στον ιστότοπο.)

Είναι σημαντικό:η προηγούμενη έκδοση του LKI-Creator είχε κάποια προβλήματα συμβατότητας με τις νέες εκδόσεις του Delphi. Σε αυτή την έκδοση εξαλείφονται.

Πάρτε το αρχείο με κείμενα προγράμματος και εικόνες από το CD μας (ενότητα «Παιχνίδι με τα χέρια σας») και αποσυσκευάστε το στον κατάλογο του έργου.

Τώρα μπορείτε να κάνετε λήψη απαραίτητα αρχεία από εδώ .

Θα πρέπει να έχουμε τρεις υποκαταλόγους. Το One - Units - αποθηκεύει βιβλιοθήκες DirectX και λειτουργικές μονάδες του πακέτου LKI-Creator. Σε ένα άλλο - Έργο - θα δουλέψουμε. οι φωτογραφίες που θα χρειαστούμε τοποθετούνται εκεί εκ των προτέρων, και προηγούμενη έκδοσητην στοά μας. Στο τρίτο - Escort - ένα έτοιμο πρόγραμμα που πρέπει να πετύχουμε.

Τώρα ας εγκαταστήσουμε (επανεγκαταστήσουμε) το LKI-Creator. Στο μενού Delphi, ανοίξτε το στοιχείο Component και επιλέξτε Install Component. Εάν έχετε ήδη εγκαταστήσει αυτό το πακέτο, μείνετε στην καρτέλα Into υπάρχον πακέτο, διαφορετικά μεταβείτε στην καρτέλα Into new πακέτο και συμπληρώστε τις κενές γραμμές όπως φαίνεται στην εικόνα (στην επάνω γραμμή, ο ευκολότερος τρόπος είναι να επιλέξετε το LKI2dEngine. αρχείο pas χρησιμοποιώντας το κουμπί Αναζήτηση και στο κάτω μέρος απλώς σημειώστε το LKI). Στη συνέχεια, κάντε κλικ στο OK και επιλέξτε Εγκατάσταση. Θα πρέπει τώρα να δείτε την καρτέλα LKI στον επάνω πίνακα των Δελφών.

Τώρα το μόνο που μένει είναι να ανεβάσουμε το έργο μας. Στο μενού Αρχείο, επιλέξτε Άνοιγμα, ανοίξτε το αρχείο Project\Obelisk.dpr...

Πού είναι ο χάρτης, Μπίλι; Χρειαζόμαστε έναν χάρτη!

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

Στο Star Escort, το προηγούμενο έργο μας, ο «χάρτης» δεν είχε κανένα νόημα: τα αστέρια τοποθετήθηκαν τυχαία και δεν επηρέασαν τίποτα, και η θέση των άλλων αντικειμένων είτε προσδιορίστηκε απευθείας στον κώδικα είτε προσδιορίστηκε τυχαία. Αυτό δεν είναι κατάλληλο για κάθε έργο. Αυτό σημαίνει ότι ήρθε η ώρα να προσθέσουμε στον κινητήρα μας χάρτης περιοχής.

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

Έτσι είναι... αλλά έχουμε περισσότερες από μία κατηγορίες καρτών. Ας ρίξουμε μια πιο προσεκτική ματιά...

Τύποι καρτών

Ο χάρτης αποτελείται από κάτι τοπίοΚαι αντικείμεναεγκατεστημένο σε αυτό. Το τοπίο πιο συχνά (αλλά όχι πάντα) χωρίζεται σε κελιά που ονομάζονται πλακάκια- πλακάκια.

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

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

Υπάρχουν επίσης κάρτες χωρίς πλακάκια. Το LKI-Creator υποστηρίζει δύο τύπους: graph και patchwork.

Ένας χάρτης γραφήματος είναι ένας χάρτης στον οποίο μόνο μερικά βασικά σημεία έχουν νόημα, συν ίσως ειδικές περιοχές (για παράδειγμα, αδιάβατες), και τα υπόλοιπα είναι απλώς ένα μοτίβο που δεν έχει αποτέλεσμα παιχνιδιού. Έτσι φτιάχνονται συχνά οι αστρικοί χάρτες, όπως, ας πούμε, στο Master of Orion: τα αστέρια και οι μαύρες τρύπες είναι βασικά σημεία, τα υπόλοιπα είναι φόντο. Σε αυτήν τη λειτουργία, μερικές φορές φτιάχνουν παγκόσμιους χάρτες, για παράδειγμα, για ένα παιχνίδι ρόλων.

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

Παραδείγματα καρτών από διάφορα παιχνίδια, που υποδεικνύουν τον τύπο, είναι στις εικόνες.

Η πλειοψηφία λοιπόν δισδιάστατηΟι χάρτες (τρισδιάστατοι - ένα ειδικό άρθρο) μπορούν να χωριστούν σε τέσσερις κατηγορίες:

  • Ορθογώνιος- TLKIRectMap. Αυτός είναι ένας χάρτης με πλακάκια, τα κύτταρα είναι τετράγωνα. Ένας τέτοιος χάρτης, για παράδειγμα, στον πολιτισμό III.
  • Εξαγώνιος- TLKIHexMap. Χάρτης με εξαγωνικά κύτταρα. Χρησιμοποιείται σε πολλά παιχνίδια πολέμου, και όχι μόνο: έτσι, για παράδειγμα, φτιάχτηκε παραδοσιακά ο χάρτης μάχης Heroes of Might & Magic.

    Αυτοί οι δύο τύποι καρτών είναι απόγονοι της γενικής τάξης TLKITileMap.

  • Γραφοβάγια- Χάρτης TLKIGraph. Αυτή η κάρτα έχει φόντο (ιδιότητα φόντου)και τα βασικά σημεία που επισημαίνονται σε αυτό είναι στατικά αντικείμενα. Η θέση άλλων αντικειμένων σε αυτόν τον χάρτη εκφράζεται είτε με συνηθισμένες συντεταγμένες (όπως ένα διαστημόπλοιο στο διαστρικό διάστημα) είτε με αναφορά σε ένα αντικείμενο (το ίδιο πλοίο σε τροχιά πλανήτη). Αυτές είναι οι κάρτες Master of Orion, Arcanum (παγκόσμια) και ούτω καθεξής.
  • Κουρελού- TlkiclusterMap. Έχει μια ιδιότητα φόντου, όπως το γράφημα, και μια δεύτερη ιδιότητα - μάσκα, που καθορίζει ποιο σημείο ανήκει σε ποια περιοχή και την ιδιότητα σύνορα, το οποίο ορίζει τις συνδέσεις μεταξύ των "shreds". Έτσι είναι διατεταγμένοι οι χάρτες, για παράδειγμα, στο Medieval: Total War ή Victoria.

Είναι σημαντικό:Οι κατηγορίες χαρτών δεν περιγράφονται στη λειτουργική μονάδα LKI2dEngine, αλλά στο LKI2dMap.

Γωνίες κλίσης

Αλλά αν νομίζετε ότι αυτό εξαντλεί τις δυνατότητες του LKI-δημιουργού για την εμφάνιση χαρτών, τότε είστε πολύ λάθος.

Ο χάρτης μπορεί να παρουσιαστεί κάτοψηή ισομετρική- κοιτάξτε υπό γωνία προς την κατακόρυφο. Για παράδειγμα, ο χάρτης του Civilization III ή του Heroes of Might & Magic IV είναι ισομετρικός, αλλά το Civilization I υιοθετεί μια άποψη από πάνω προς τα κάτω.

Συνήθως, η ισομετρία χρησιμοποιείται για χάρτες με πλακάκια, ενώ οι χάρτες γραφημάτων χρησιμοποιούνται με κάτοψη, καθώς η κλίμακα των χαρτών γραφημάτων είναι συνήθως μικρότερη. Υπάρχουν όμως εξαιρέσεις: για παράδειγμα, στο Medieval: Total War υπάρχει ένας ισομετρικός χάρτης με συνονθύλευμα.

Η ιδιότητα του χάρτη είναι υπεύθυνη για την ισομετρία Ισομετρικόςκαι δύο παραμέτρους που καθορίζουν τη γωνία με την οποία φαίνεται η κάμερά μας: PhiΚαι Θήτα.

Το πρώτο είναι υπεύθυνο για την περιστροφή του χάρτη σε σχέση με τον κατακόρυφο άξονα: για παράδειγμα, αν τον ρυθμίσετε σε 45 μοίρες (μετριέται σε μοίρες), τότε το ορθογώνιο κελί πλέγματος θα προσανατολιστεί με γωνία προς τα πάνω, όπως στο Civilization . Στο Phi=0, μία από τις πλευρές του κελιού θα είναι οριζόντια.

Το δεύτερο ελέγχει την κλίση της κάμερας σε σχέση με την κατακόρυφο. Για ευκολία, δίνεται ως η αναλογία οριζόντιων και κάθετων μονάδων μήκους. Ας πούμε, εάν θέλουμε το κελί μας να έχει το μισό ύψος όσο το πλάτος, πρέπει να ορίσουμε το Theta στο 2.

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

Αλλά οι χάρτες γραφημάτων και συνονθύλευμα σάς δίνουν το δικαίωμα να εκχωρήσετε αυτές τις παραμέτρους όπως θέλετε (και ακόμη, αν θέλετε, να τις αλλάξετε στη διαδικασία), αλλά δεν πρέπει να παρασυρθείτε με αυτό - επιπλέον του γεγονότος ότι τέτοιες στροφές απαιτούν πολλή ώρα, επίσης δεν φαίνονται πολύ δροσερά. Και μην ξεχνάς ότι αν ο χάρτης σου είναι καλλιτεχνικός, με εικόνες, επιγραφές κ.λπ., τότε θα γυρίσουν μαζί του... Γενικά, μερικές φορές είναι πιο εύκολο να σχεδιάσεις έναν χάρτη συνονθύλευμα λαμβάνοντας υπόψη την απαιτούμενη περιστροφή - ευτυχώς, αποστάσεις συχνά δεν παίζουν κανένα ρόλο εκεί.

Αρθρώσεις

Συνονθύλευμα χάρτης, κάτοψη.

Οι χάρτες πλακιδίων έχουν ένα άλλο πρόβλημα - την ένωση πλακιδίων. Ελέγχεται από την παράμετρο TileBorderStyle. Τις περισσότερες φορές αυτό tileStraight, μια λειτουργία στην οποία τα πλακίδια απλά ταιριάζουν μεταξύ τους χωρίς εφέ ακμών ή tileBorder, στις οποίες σχεδιάζονται γραμμές που χωρίζουν το ένα πλακίδιο από το άλλο - τα όρια των κελιών (στην τελευταία περίπτωση, μην ξεχάσετε να ορίσετε χρώμαπλέγματα στην παράμετρο TileBorderColor).

Αλλά υπάρχει μια πιο πονηρή επιλογή, όταν πανομοιότυπα πλακάκια είναι δίπλα στο άλλο χωρίς αλλαγές και διαφορετικά χρησιμοποιούνται χρησιμοποιώντας ένα ειδικό "μεταβατικό" πλακίδιο. Αυτό γίνεται συνήθως εάν ο χάρτης αποτελείται κυρίως από μεγάλες εκτάσεις ενός τύπου επικράτειας, ας πούμε, μεγάλες περιοχές πρασίνου, και ένα μεμονωμένο κελί δεν είναι σημαντικό και δεν πρέπει να γίνει αντιληπτό από τον παίκτη. Αυτή είναι η κάρτα Heroes of Might Magic. Αλλά εάν κάθε κύτταρο υποβάλλεται σε επεξεργασία ξεχωριστά, όπως στο Civilization, τότε αυτή η μέθοδος δεν είναι κατάλληλη και είναι καλύτερο να διαχωρίζονται σαφώς τα κελιά το ένα από το άλλο. Τεχνολογία "Fused" (ονομάζεται επίσης μάσκα) καθορίζεται από την τιμή TileBorderStyle ίση με tileMasked. Θα μιλήσουμε για τη δομή τους άλλη φορά - αυτό είναι ένα αρκετά περίπλοκο θέμα.

Πλακάκι

Στοιχείο χάρτη - αντικείμενο κλάσης TLKITile- έχει απλή δομή. Αρχικά περιέχει: συντεταγμένες, το sprite που το σχεδιάζει, τον κωδικό τύπου πλακιδίου (που καθορίζει τι έχουμε εδώ - λόφο, έρημο, δρόμο, θάλασσα;) και ικανότητα cross-country (αυτό είναι σχετικό στα περισσότερα παιχνίδια). Το τελευταίο είναι ο αριθμός των μονάδων κίνησης που δαπανώνται για τη μετακίνηση μέσω αυτού του πλακιδίου γηομάδα. Για αδιάβατα πλακάκια, αυτός είναι αρνητικός αριθμός.

Μια άλλη παράμετρος - Αντικείμενα, μια λίστα αντικειμένων που βρίσκονται σε αυτό το πλακίδιο (τύπος TLKIGameObject).

Για να μάθετε σε ποιο κελί έγινε κλικ, ο χάρτης έχει μια μέθοδο MouseTile(x,y) επιστρέφοντας το επιλεγμένο πλακίδιο.

Οι μέθοδοι πλακιδίων περιλαμβάνουν Είναι Γείτονας(Πλακάκι, Απόσταση). Αυτή η συνάρτηση επιστρέφει true εάν το Tile δεν απέχει περισσότερο από κελιά απόστασης από το δεδομένο πλακίδιο (από προεπιλογή αυτή η παράμετρος είναι ίση με ένα, δηλαδή, εάν γράψετε απλώς IsNeighbour(Tile), η συνάρτηση θα επιστρέψει true για το πλακίδιο που βρίσκεται ακριβώς δίπλα Για ένα τετράγωνο πλέγμα, αυτά τα πλακίδια που οριοθετούν διαγώνια θεωρούνται επίσης «γείτονες».

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

Αριθμός γειτόνων

// Προκαλώντας βλάβη σε ένα κύτταρο

διαδικασία TObeliskTile.Damage(dmg: ακέραιος);

αν(Objects.Count > 0) και// Μπορεί να έχουμε

// όχι περισσότερα από ένα αντικείμενο ανά κελί

(Objects.ID > 0) // Παθητικά αντικείμενα

// δεν έχει υποστεί ζημιά

Dec(Objects.Hits,

// Αφαιρέστε αυτόματα την προστασία από ζημιές

Μέγ.(0,dmg-(Αντικείμενα όπως και TObeliskGameObject).Defense);

αν Objects.Hitshen Die; // Αφαιρούμε τους νεκρούς

// Επίθεση με βολίδα

διαδικασία TObeliskTile.Fireball;

varΓείτονας: TObeliskTile;

Neighbor:= FirstNeighbour ως TObeliskTile;

Neighbor.Damage(6);

Neighbor:= NextNeighbour ως TObeliskTile;

μέχριΓείτονας = μηδέν; // Μέχρι να ξεμείνουν οι γείτονες

Ένα παράδειγμα είναι στην πλαϊνή γραμμή "Αριθμός γειτόνων". Αυτή η διαδικασία υπολογίζει τη βολίδα που χτυπά ένα κελί και όλους τους γείτονές του.

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

Συχνά χρειαζόμαστε κάποιες άλλες παραμέτρους, και συνήθως την κατηγορία των πλακιδίων που συνθέτουν τον χάρτη - απόγονος TLKITile. Έτσι στο παράδειγμα - το TObeliskTile κληρονομείται από το TLKITile.

Είναι σημαντικό:Εάν φέρουμε έναν χάρτη με πλακάκια στην οθόνη του παιχνιδιού μας, οι συντεταγμένες, καθώς και οι μέθοδοι TLKIGameObject που σχετίζονται με την απόσταση, αρχίζουν από προεπιλογή να μετρούν την απόσταση σε πλακίδια και όχι σε σημεία. Οι συντεταγμένες κουμπιών, εικονιδίων κ.λπ. συνεχίστε να μετράτε σε pixel! Αλλά αυτή η λειτουργία μπορεί να απενεργοποιηθεί - αυτό μπορεί να είναι χρήσιμο για στρατηγικές σε πραγματικό χρόνο.

Επιλογή κάρτας

Λοιπόν, ας ξεκινήσουμε με ένα ορθογώνιο πλέγμα (TLKIRectMap), μια ισομετρική χαρτογράφηση (γωνιακές παράμετροι 0, 1,5). Αφήστε το πλέγμα να σχεδιαστεί (στυλ tileBorder). Ας πούμε στον κινητήρα ότι ο συγκεκριμένος χάρτης πρέπει να εμφανίζεται. Μέχρι στιγμής έχουν ολοκληρωθεί όλες οι απαραίτητες ενέργειες χωρίς να γραφτεί ούτε μια γραμμή κώδικα.

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

Θα δηλώσουμε τις φιγούρες, όπως και πριν, ως sprites.

Επεξεργαστής χάρτη

Χάρτης συνονθύλευμα, ισομετρικός.

Υπάρχουν αρκετές δυσκολίες εδώ. Ακριβώς ο ίδιος κινητήρας, οι ίδιες δηλώσεις πλακιδίων... Η διεπαφή, όπως η επιλογή ενός πλακιδίου, η φόρτωση/αποθήκευση κ.λπ., μπορεί να γίνει εύκολα τυπικά μέσαΔελφοί: κανείς δεν μας αναγκάζει να το μεταφράσουμε ΛΕΙΤΟΥΡΓΙΑ ΠΛΗΡΟΥΣ ΟΘΟΝΗΣ. Δεν θα το αναλύσουμε εδώ - όλα βρίσκονται στο αρχείο παραδείγματος. Το παράδειγμα κώδικα που χρησιμοποιήθηκε σκόπιμα ο απλούστερος τρόπος; Εάν θέλετε, μπορείτε, για παράδειγμα, να κάνετε την παλέτα αντικειμένων και την παλέτα πλακιδίων γραφική.

Ο επεξεργαστής έχει μόνο δύο χαρακτηριστικά που δεν μας είναι γνωστά. Το πρώτο είναι αρκετά απλό: είναι ένα νέο χαρακτηριστικό του ποντικιού που έχει σχεδιαστεί ειδικά για χάρτες πλακιδίων. Λειτουργία TLKIRectMap.SelectTileεπιστρέφει έναν δείκτη στο ακριβές πλακίδιο στο οποίο έγινε κλικ, ώστε να μπορούμε να χειριστούμε εύκολα το κλικ.

Αλλά το δεύτερο νέο προϊόν αξίζει πιο προσεκτικής εξέτασης.

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

Ας δούμε τον κωδικό (“Write card”).

Ηχογράφηση κάρτας

διαδικασία TObeliskMap.Save;

var i,j: ακέραιος;

InitSave(FName);

WriteStr(MapName);

Γράψτε (map.Width, sizeof (map.Width));

Γράψτε (map.height, sizeof (map.height));

Για i:=0 προς τηνΧάρτης.Πλάτος-1 κάνω

για j:=0 προς τηνΧάρτης.Ύψος-1 κάνω

Γράψτε (map.tiles.code, sizeof (ακέραιος);

Ετσι δουλευει. Πρώτα πρέπει να ανοίξετε το αρχείο χρησιμοποιώντας μια ειδική διαδικασία InitSave, της οποίας η μόνη παράμετρος είναι το όνομα του αρχείου. Στη συνέχεια αποθηκεύουμε την κεφαλίδα για έλεγχο τύπου χρησιμοποιώντας μια ειδική διαδικασία WriteHeader. Στη συνέχεια σημειώνουμε όλα όσα χρειαζόμαστε χρησιμοποιώντας τη διαδικασία WriteStrγια χορδές και για όλους τους άλλους τομείς - Γράφω(η δεύτερη παράμετρός του είναι το μέγεθος των γραπτών δεδομένων σε byte). Μπορείτε να γράψετε τις δικές σας διαδικασίες για πεδία αντικειμένων, όπως απαιτείται Αποθηκεύσετεμε εγγραφή κεφαλίδας. Τέλος, κλείνουμε το αρχείο με τη διαδικασία FinSave.

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

Το όνομα του καταχωρητή (TPMAP, "TOBELISKMAP");

TpMapείναι μια σταθερά που πρέπει να δηλώσετε επίσης. Εξισώστε το, ας πούμε, με 1. Και στον κατασκευαστή του αντικειμένου TObeliskMap, αντιστοιχίστε την τιμή αυτής της σταθεράς στην παράμετρο TypeID.

Γιατί όλη αυτή η φασαρία; Εκτός από την αντιστοίχιση τύπου, έχετε ένα πολύ σημαντικό όφελος.

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

Αυτός ο κωδικός θα αρχικοποιήσει αυτόματα το νέο πεδίο ως κενό εάν δεν έχει αποθηκευτεί στο αρχείο. Και μπορείτε να γράψετε ένα αρχείο προσθέτοντας απλώς τη γραμμή WriteStr(Name) στο τέλος.

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

Ας παίξουμε

Πρώτα απ 'όλα, πρέπει να δημιουργήσουμε μια νέα κλάση που προέρχεται από το TLKIGameObject. Θα μας λείψουν τα ακίνητα του παλιού. Στη νέα κλάση, πρέπει να προσθέσετε πεδία για τα κύρια χαρακτηριστικά: εμβέλεια, κίνηση και ούτω καθεξής.

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

Στην οθόνη μας θα εφαρμόσουμε κουμπιά TLKIButton σε μορφή τοξότων, ξιφομάχων, μάγων, φαντασμάτων, ιπποτών.

Πρώτα έχουμε τη ρύθμιση. Ας ορίσουμε τη ζώνη τοποθέτησης για τη μία πλευρά ως τις τρεις πάνω «γραμμές» του χάρτη, για την άλλη - ως τις τρεις κάτω «γραμμές».

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

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

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

Μετακίνηση του σχήματος

// Εάν το επιλεγμένο κελί καταλαμβάνεται από τον εχθρό, επιτιθέμεθα,

// αν είμαστε ελεύθεροι, κυκλοφορούμε, αν είμαστε απασχολημένοι με τους δικούς μας

// ή ένα εμπόδιο - αγνοήστε το κλικ

Tile:= Map.MouseTile(MouseX, MouseY);

αν(Πλακάκι = μηδέν)// Κάντε κλικ έξω από το παράθυρο του παιχνιδιού

έπειταέξοδος;

// Κίνηση

αν(Tile.Objects.Count = 0)

και(Απόσταση (Εαυτός)

και οχιΜετακινήθηκε έπειτα

// Ας ελέγξουμε αν μπορούμε να φτάσουμε εκεί

αν δεν HasWay (Πλακάκι) έπειταέξοδος;

MoveObj(ID, Tile.x, Tile.y);

// Το παιχνίδι είναι turn-based - μετακινηθείτε αμέσως

Μετακινήθηκε:= true;

//

ανΕπιτέθηκε έπειτα

Icon.IsVisible:= ψευδής;

// Επίθεση

αν(Tile.Objects.Count > 0)

και(Απόσταση (Εαυτός)

και οχιΕπιτέθηκε έπειτα

Αντικείμενο:= Πλακίδιο.Αντικείμενα;

// Επιτιθέμεθα μόνο στους εχθρούς

αν Obj.Side = Πλευρά έπειταέξοδος;

Obj.Damage(dmg);

Attacked:= true;

// Εάν η μετακίνηση έχει ολοκληρωθεί, αφαιρέστε το εικονίδιο

ανΜετακινήθηκε έπειτα

Icon.IsVisible:= ψευδής;

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

Όταν πλησίασαν και οι δύο πλευρές, οι δράκοι έδρασαν. Λειτουργούν πολύ απλά: επιλέγουν τον πλησιέστερο μη δράκο που βρίσκεται σε απόσταση 7 τετραγώνων από αυτούς και επιτίθενται. Δείτε τον κωδικό Dragon Actions.

Δράσεις Dragon

// Έλεγχος πλακιδίων εντός 7 τετραγώνων από τον δράκο

Για i:= Μέγ.(0, x - 7) προς τηνΕλάχιστο (μέγιστο μέγεθος, x + 7) κάνω

Για j:= Μέγ.(0, y - 7) προς τηνΕλάχιστο (Μέγιστο μέγεθος, y + 7) κάνω

if (Map.Tiles.Objects.Count > 0) και

(Map.Tiles.Objects.Code>1)

// 0 - κωδικός εμποδίου, 1 - δράκος

έπειτα αρχίζουν

// Επιλογή σημείου προς μετακίνηση

αν x=i έπειτατσεκούρι:=i

αλλούαν x>i έπειτα ax:=i+2

αλλούτσεκούρι:= i-2;

αν y=j έπειτααι:= ι

αλλούαν y>j έπειτα ay:= j+2

αλλού ay:= j-2;

MoveObj(NO, ax, ay);

// Ας επιτεθούμε

Map.Tiles.Damage(12);

// Σπάζοντας τον κύκλο: όχι περισσότερες από μία επίθεση

// κάθε δράκος ανά γύρο

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


Έτσι, έχουμε ένα παιχνίδι στρατηγικής. Ωστόσο, για πλήρη ευτυχία, αυτό που λείπει, πρώτα απ 'όλα, είναι η τεχνητή νοημοσύνη, η οποία θα επιτρέψει να δοθεί στο παιχνίδι μια λειτουργία για έναν παίκτη (δεν θεωρούμε την απλούστερη διαδικασία για τον έλεγχο των δράκων). Αυτό θα κάνουμε την επόμενη φορά. Τα λέμε σε ένα μήνα!

Σε μελλοντικά τεύχη

Στα παρακάτω θέματα θα μιλήσουμε για:

  • συστήματα σωματιδίων για την εμφάνιση καπνού, σπινθήρων κ.λπ.
  • εργασία με διαφάνεια·
  • τρισδιάστατοι κινητήρες.
  • Βασικά στοιχεία τεχνητής νοημοσύνης.
  • αποσφαλμάτωση του προγράμματος.
  • δημιουργώντας ένα σχέδιο παιχνιδιού και σενάριο,
  • σύνταξη ενός εγγράφου σχεδιασμού·
  • ισορροπία παιχνιδιού?
  • σκέψη μέσα από τους χαρακτήρες του παιχνιδιού και τις γραμμές τους.
  • εργασία με πακέτα Photoshop και 3D.
  • κινούμενα σχέδια?
  • μουσική και φωνητική υποκριτική·
  • και πολλα ΑΚΟΜΑ.

Είναι πολύ πιθανό να μάθετε πώς να τα κάνετε όλα αυτά με τα χέρια σας. Σύντομα θα το δείτε αυτό.

Γράψτε μας…

Για όσους πιστεύουν ότι το πακέτο μπορεί να συμπληρωθεί με κάτι: πρώτον, μην ξεχνάτε ότι δεν υπάρχει Τελική έκδοσηπακέτο, αλλά μόνο αυτό που υλοποιεί τις λειτουργίες που περιγράφονται στα άρθρα μας. Ίσως κάποιες από τις ιδέες σας έχουν ήδη υλοποιηθεί και περιμένουν τη σειρά τους (δείτε την πλαϊνή γραμμή «Σε μελλοντικά τεύχη»). Και σε κάθε περίπτωση: όταν μας προσφέρετε μια ιδέα, προσπαθήστε να αιτιολογήσετε γιατί η πρότασή σας είναι χρήσιμη για πολλά παιχνίδια ταυτόχρονα και όχι μόνο για το συγκεκριμένο σας.

Για ανεξάρτητη εργασία

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

  • Διαιρέστε τα αντικείμενα εμποδίων σε καταστρεπτά (δέντρα και θάμνους) και άφθαρτα (πέτρες) και βεβαιωθείτε ότι οι βολίδες και η αναπνοή του δράκου καίνε τη βλάστηση.
  • Δημιουργήστε λάκκους (καφέ κελί) ή μια φωτιά που ανάβει για πολλές στροφές (κόκκινο κελί) στο σημείο όπου πυροδοτήθηκε η επίθεση πυρκαγιάς.
  • Επιτρέψτε σε ξιφομάχους και ιππότες να καλύψουν τους γείτονές τους, δίνοντάς τους +1 στην άμυνα.
  • κάνει την κίνηση των μορφών στην οθόνη ομαλή.

Κι αν σε πραγματικό χρόνο;

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

  • δεν χρειάζεται πεδίο Ταχύτητα παιχνιδιούστην τάξη TObeliskObject- χρησιμοποιήστε την ταχύτητα από τον βασικό κινητήρα (η ταχύτητα κίνησης στην οθόνη είναι ίση με την ταχύτητα του παιχνιδιού).
  • Ο ακέραιος υπολογισμός των αποστάσεων είναι απενεργοποιημένος.
  • Ο κώδικας κίνησης της φιγούρας ξαναγράφεται, λαμβάνοντας υπόψη το γεγονός ότι είναι απαραίτητο να χαράξουμε μια τροχιά γύρω από τα εμπόδια.
  • Το κουμπί "τέλος κίνησης" αφαιρείται.

Αυτό είναι όλο. Θα προσπαθήσετε να το κάνετε μόνοι σας;

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

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

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

Κύρια στάδια δημιουργίας στρατηγικής

Εάν πάρετε τυχαία 5-7 δείκτες και προσπαθήσετε να δημιουργήσετε ένα όχημα εργασίας από αυτούς, τότε είναι απίθανο να βγει κάτι χρήσιμο. Πρώτα πρέπει να σκεφτείτε την κύρια ιδέα της στρατηγικής και μόνο στη συνέχεια να προχωρήσετε στην επιλογή εργαλείων. Μπορεί να προταθεί η ακόλουθη σειρά ενεργειών:

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

Σπουδαίος! Όταν επιλέγετε ένα χρονικό πλαίσιο, δεν συνιστάται να πάτε πολύ μικρό, ειδικά αν ο έμπορος δεν έχει εμπειρία σε κερδοσκοπίες σε μικρά χρονικά διαστήματα. Για αρχάριους, είναι γενικά καλύτερα να μην πηγαίνετε κάτω από το H1-H4· μπορείτε να διαβάσετε περισσότερα σχετικά με την επιλογή του βέλτιστου χρονικού διαστήματος.

  • το επόμενο στάδιο είναι η επιλογή των κατάλληλων οργάνων και εδώ η αφθονία των επιλογών μπορεί να παίξει ένα σκληρό αστείο στον έμπορο, επειδή έχει δεκάδες δείκτες στη διάθεσή του, τη δυνατότητα χρήσης κηροπήγιο, κύμα, τεχνική και θεμελιώδη ανάλυση. Από όλη αυτή την ποικιλία, πρέπει να επιλέξετε πολλά μέσα που ταιριάζουν καλύτερα στο στυλ συναλλαγών που επιθυμείτε.
  • Ένας από τους κύριους κανόνες κάθε στρατηγικής είναι ότι το λαμβανόμενο σήμα πρέπει να επιβεβαιώνεται από πολλά φίλτρα, αλλά καλό είναι να περιοριστεί ο αριθμός τους. Για παράδειγμα, για στρατηγικές δεικτών, δεν είναι επιθυμητό ο αριθμός των δεικτών να υπερβαίνει τους 3-4, διαφορετικά θα υπάρξει σύγχυση στα σήματα και εάν σκοπεύετε να εργαστείτε χρησιμοποιώντας τεχνική ανάλυση, τότε οι δείκτες θα παίξουν υποστηρικτικό ρόλο.
  • αναπτύσσονται κανόνες για την υποστήριξη θέσης, το αποτέλεσμα θα πρέπει να είναι ένας αλγόριθμος ενεργειών για οποιοδήποτε σενάριο.
  • Το τελευταίο στάδιο είναι να τρέξετε το όχημα πρώτα σε έναν λογαριασμό ιστορικού και μετά σε έναν δοκιμαστικό λογαριασμό, ή ακόμα καλύτερα, σε έναν πραγματικό λογαριασμό σεντ. Ο κύριος στόχος είναι να δοκιμάσετε τη βιωσιμότητα της στρατηγικής σε πραγματικές συνθήκες και ένας πραγματικός λογαριασμός (ακόμα και ένα σεντ) θα σας επιτρέψει να νιώσετε όλο το φάσμα των συναισθημάτων, από την ευφορία μέχρι την πίκρα των απωλειών.

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

Τι πρέπει να περιλαμβάνεται στο όχημα

Η δημιουργία μιας στρατηγικής μοιάζει λίγο με ένα σετ κατασκευής· απλά πρέπει να επιλέξετε τα σωστά μέρη. Όταν δημιουργείτε ένα όχημα μπορείτε και πρέπει να χρησιμοποιήσετε:

  • δείκτες. Επιπλέον, δεν πρέπει να κυνηγήσετε ούτε τον αριθμό τους ούτε την υπερβολική πολυπλοκότητά τους, ακόμα και σε πλήρως μηχανικά οχήματα αρκούν 3-5 κομμάτια.
  • γραφικά μοτίβα - γνωστές σημαίες, σημαιάκια, τρίγωνα, κεφάλι και ώμοι, διπλό πάτο και κορυφές εξακολουθούν να λειτουργούν καλά.
  • γραφικές κατασκευές ·
  • Επίπεδα FIBO.
  • στοιχεία θεμελιώδους ανάλυσης - τώρα είναι δύσκολο να βγάλεις χρήματα μόνο από ειδήσεις, αλλά είναι απαραίτητο να ληφθεί υπόψη το οικονομικό ημερολόγιο στις συναλλαγές. Τουλάχιστον απλώς μετακινήστε τις συναλλαγές στο νεκρό σημείο πριν από την δημοσίευση σημαντικών στατιστικών για τις ΗΠΑ ή την Ευρώπη ή ακόμα και κλείστε εντελώς το κέρδος.

Υπάρχει επίσης μια σειρά από τεχνικές, τα οφέλη των οποίων είναι αμφίβολα:

  • Το Martingale είναι μια αρχικά ασύμφορη τακτική, η μόνη πιθανότητα επιτυχίας είναι ότι πριν την απώλεια, θα μπορέσετε να ανακτήσετε το ποσό της κατάθεσης και να κερδίσετε λίγο.

  • Είναι επίσης ανεπιθύμητο να χρησιμοποιείτε κλείδωμα εκτός εάν είναι απολύτως απαραίτητο· τότε είναι αρκετά δύσκολο να φύγετε από το κάστρο.
  • Είναι επίσης καλύτερο να μην χρησιμοποιείτε σήματα από το εξωτερικό. Τα εξωτερικά σήματα σημαίνουν, για παράδειγμα, σύγκριση του αριθμού των πωλητών/αγοραστών, διάφοροι δείκτες της διάθεσης της πλειονότητας των εμπόρων, κ.λπ. Υπάρχουν όμως και αρκετοί πόροι που μπορείτε να ακούσετε, για παράδειγμα, Autochartist δίνει καλά σήματα με βάση γραφικά μοτίβα.
  • Είναι επίσης καλύτερο να μην χρησιμοποιείτε στοιχεία ανάλυσης κυμάτων (τουλάχιστον για αρχάριους). Αν και υπάρχουν εξαιρέσεις εδώ, για παράδειγμα, οι συναλλαγές στο Wolfe Waves βασίζονται ακριβώς στην ανάλυση κυμάτων, αλλά δεν είναι ιδιαίτερα περίπλοκο.

Ανάπτυξη μιας απλής στρατηγικής δεικτών

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

Η στρατηγική θα πρέπει να λειτουργεί σε σχεδόν οποιοδήποτε ζεύγος νομισμάτων· αυτό είναι απαραίτητο γιατί, λόγω του μεγάλου χρονικού πλαισίου, τα σήματα δεν θα εμφανίζονται πολύ συχνά. Έτσι η κατάσταση θα αξιολογηθεί χρησιμοποιώντας 5-7 ζεύγη νομισμάτων ταυτόχρονα. Όσον αφορά το χρονικό πλαίσιο, το D1 είναι κατάλληλο· προχωράμε από το γεγονός ότι το Forex στο αρχικό στάδιο είναι μόνο μια προσθήκη στην κύρια εργασία, επομένως θα ανταλλάσσουμε καθημερινά κεριά.

Τώρα πρέπει να αποφασίσετε πώς ακριβώς θα καθοριστεί η στιγμή που θα εισέλθετε. Υπάρχουν πολλές επιλογές για τον προσδιορισμό μιας τάσης:

  • οπτικά - αλλά το eyeballing δεν θα σας επιτρέψει να αναπτύξετε σαφείς κανόνες συναλλαγών.
  • χρησιμοποιώντας έναν ή περισσότερους κινητούς μέσους όρους·
  • σύμφωνα με την τιμή του δείκτη ADX, εάν είναι πάνω από 30, τότε υπάρχει μια ισχυρή τάση, λιγότερο από 20, η αγορά είναι ήρεμη.
  • χρησιμοποιώντας γραφικές κατασκευές.
  • Το Bollinger Bands σάς επιτρέπει να κρίνετε την ισχύ μιας τάσης από την απόσταση μεταξύ των άνω και κάτω ορίων του καναλιού.

Γενικά, υπάρχουν πολλές επιλογές, αλλά δεδομένου ότι η στρατηγική πρέπει να είναι όσο το δυνατόν πιο απλή, θα επικεντρωθούμε στους κινητούς μέσους όρους. Ή μάλλον, ένα MA, θα κρίνουμε την κατεύθυνση της τάσης από τη θέση της τιμής σε σχέση με αυτήν. Μπορείτε να ξεκινήσετε με περιόδους που κατά μέσο όρο την τιμή για μια ολόκληρη χρονική περίοδο (εβδομάδα, μήνα, τρίμηνο κ.λπ.), για παράδειγμα, 20 θα είναι κατά μέσο όρο την τιμή τον περασμένο μήνα. Το πιο δύσκολο είναι να επιλέξετε την κατάλληλη περίοδο MA, αλλά εδώ θα πρέπει να προχωρήσετε με δοκιμή και λάθος.

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

  • πρώτα ελέγχουμε τη θέση της τιμής σε σχέση με το MA, η τιμή πρέπει να είναι πάνω από τη γραμμή.
  • Στη συνέχεια πρέπει να βρούμε μια κίνηση τάσεων, χρειαζόμαστε ένα κερί με μεγάλο σώμα και μικρές σκιές (συνιστάται η αξία της σκιάς να μην υπερβαίνει το 10-15% του μεγέθους του σώματος των κεριών).
  • θα πρέπει να ακολουθείται από ένα κερί με μικρή ημερήσια εμβέλεια (απόσταση από ψηλά έως κοντά). Η τιμή κλεισίματος δεν πρέπει να φτάσει στο επίπεδο του 50% της προηγούμενης ημέρας - αυτήν την ημέρα πραγματοποιείται η διόρθωση της τιμής.

Σε αυτήν την περίπτωση, η διόρθωση μπορεί να γίνει σύμφωνα με 2 σενάρια:

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

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

Οι κανόνες της στρατηγικής έχουν διαμορφωθεί, το μόνο που μένει είναι να δοκιμαστεί στη δράση. Η πρακτική δείχνει ότι ακόμη και ένας τόσο απλός αλγόριθμος παράγει περισσότερα από τα μισά κερδοφόρα επαγγέλματα (και αν μεταφέρετε το εμπόριο στο μηδέν νωρίς, η πιθανότητα μείωσης της απώλειας).

Είσοδος στην αρχή της τάσης

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

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

Αυτή δεν είναι μια επαναστατική προσέγγιση· ο Μπιλ Γουίλιαμς χρησιμοποίησε κάτι παρόμοιο στον περίφημο Αλιγάτορά του. Έτσι, αυτός ο δείκτης μπορεί ακόμη και να ληφθεί ως βάση του TS.

Εάν προσθέσουμε το Alligator με τυπικές ρυθμίσεις στο H1, μπορούμε να δούμε ότι δίνει πολλά ψευδή σήματα· καθήκον μας είναι να τα εξαλείψουμε. Για να γίνει αυτό, θα εισέλθουμε στην αγορά με μια εκκρεμή παραγγελία και το επίπεδο της τοποθέτησής της θα καθοριστεί χρησιμοποιώντας Fractals.

Ως αποτέλεσμα, η ροή εργασίας θα μοιάζει με αυτό (χρησιμοποιώντας το παράδειγμα αγορών):

  • Ψάχνουμε για μια επίπεδη περιοχή στο γράφημα (όλες οι γραμμές Alligator είναι χαοτικά συνυφασμένες μεταξύ τους).
  • Στη συνέχεια, χρειάζεστε ένα κερί φράκταλ (και θα πρέπει να βρίσκεται πάνω από τις γραμμές, χωρίς καν να τις αγγίζετε με την κάτω σκιά).
  • μια εντολή διακοπής αγοράς τοποθετείται ακριβώς πάνω από το μέγιστο της και μια προστατευτική εντολή πέρα ​​από το κάτω όριο της ζώνης ενοποίησης.
  • Το TP είναι είτε σταθερό (50-70 p), είτε χρησιμοποιήστε ένα τέρμα στοπ. Σε γενικές γραμμές, είναι αρκετά δύσκολο να προβλεφθεί η ισχύς μιας κίνησης τάσης, επομένως είναι καλύτερο να χρησιμοποιήσετε ένα συρόμενο στοπ παρά ένα σταθερό TP ή να καθορίσετε το επίπεδο στόχου χρησιμοποιώντας την ίδια τεχνική ανάλυση.

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

Παράδειγμα απλού συνδυασμένου συστήματος

Η ιδέα παραμένει η ίδια - καταχώρηση στο τέλος της διόρθωσης, αλλά θα λύσουμε αυτό το πρόβλημα με διαφορετικό τρόπο. Ο στόχος παραμένει ο ίδιος - να καθορίσουμε τη στιγμή ολοκλήρωσης της διόρθωσης και να εισαγάγουμε προς την κατεύθυνση της τάσης, αλλά αν νωρίτερα χρησιμοποιούσαμε τον κινητό μέσο όρο, τώρα θα χρησιμοποιήσουμε τα επίπεδα Fibo και τον ταλαντωτή για να καθορίσουμε την ολοκλήρωση της επαναφοράς.

Θα μας ενδιαφέρει μια έντονη κίνηση τάσεων, μπορεί επίσης να καθοριστεί οπτικά. Μετά από αυτό, απλά πρέπει να τεντώσετε τα επίπεδα FIBO σε αυτό, αυτό είναι απαραίτητο για τον προσδιορισμό των δυνητικών επιπέδων για την ολοκλήρωση της διόρθωσης. Το σημαντικότερο επίπεδο διόρθωσης είναι 38,2%, επιτρέπεται να εμπορεύεται ριμπάουντ από 50%και 61,8%.

Αλλά το γεγονός ότι η τιμή αγγίζει το επίπεδο FIBO δεν είναι αρκετό, απαιτείται επιβεβαίωση. Το στοχαστικό μπορεί να αντιμετωπίσει αυτό το έργο αρκετά καλά (μπορείτε να δοκιμάσετε να χρησιμοποιήσετε RSI για τον ίδιο σκοπό). Για παράδειγμα, για μια συναλλαγή αγοράς, η τιμή πρέπει να είναι κοντά στο επίπεδο διόρθωσης και το Stochastic εκείνη τη στιγμή πρέπει να βρίσκεται στη ζώνη υπερπώλησης.

Αφού η τιμή αγγίξει το επίπεδο, περιμένουμε μέχρι το στοχαστικό να φύγει από τη ζώνη oversold και να αγοράζει. Το στοπ μπορεί να τοποθετηθεί πέρα ​​από το επόμενο επίπεδο διόρθωσης και το TP μπορεί να τοποθετηθεί τουλάχιστον στο πρόσφατο υψηλό πριν από την έναρξη του pullback.

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

Στρατηγικές βασισμένες στην τεχνική ανάλυση

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

  • Γραμμές τάσης - τις κατασκευάζουμε σε διαφορετικά χρονικά πλαίσια, ξεκινώντας από το υψηλότερο και σταδιακά κατευθύνσεις στο εργαζόμενο.
  • Τα επίπεδα Fibo, θα πρέπει να επεκταθούν σε σημαντικές κινήσεις τιμών στην ιστορία. Τα επίπεδα διόρθωσης 38,2, 50 και 61,8% θα είναι καθοριστικής σημασίας· η πρακτική δείχνει ότι η διόρθωση τις περισσότερες φορές τελειώνει σε αυτούς τους βαθμούς.
  • Το MT4 εφαρμόζει επίσης μια σειρά από άλλα εργαλεία τεχνικής ανάλυσης, για παράδειγμα, Andrews pitchforks, ένα σύνολο εργαλείων Gann, διάφορους τύπους καναλιών κ.λπ.

Αλλά για μια αρκετά ακριβή πρόβλεψη, αρκούν τα επίπεδα Fibo και οι γραμμές τάσης· περιοχές συγκεντρώσεων επιπέδων και γραμμών συνήθως λειτουργούν ως υποστήριξη/αντίσταση. Η διαπραγμάτευση μπορεί να πραγματοποιηθεί τόσο για breakout όσο και για rebound από επίπεδα και γραμμές.

Όσον αφορά τα πρόσθετα φίλτρα, μπορείτε να προσθέσετε μοτίβα κεριών και κάποιο είδος ένδειξης για να αναζητήσετε αποκλίσεις (το ίδιο Stochastic ή MACD). Μπορείτε να διαβάσετε περισσότερα σχετικά με τη χρήση της τεχνικής ανάλυσης.

Φίλτρα για συστήματα συναλλαγών

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

Υπάρχει μια σειρά από φίλτρα που ταιριάζουν σχεδόν σε κάθε στρατηγική:

  • κατάσταση σε υψηλότερα χρονικά πλαίσια. Εάν, για παράδειγμα, η στρατηγική εκτελείται στο Η1 σύμφωνα με μια μηχανική στρατηγική, τότε δεν θα ήταν λάθος να δούμε τι συμβαίνει στο H4 και στο D1.
  • μέσο ημερήσιο εύρος, που σημαίνει την απόσταση που διανύει η τιμή κατά μέσο όρο ανά ημέρα· κατά τη διαπραγμάτευση εντός της ημέρας, αυτό θα βοηθήσει στο φιλτράρισμα ενός αριθμού σημάτων. Ας φανταστούμε ότι κατά τη διάρκεια της ημέρας η τιμή κινείται κατά μέσο όρο 100-120 pips, εάν σε μια από τις ημέρες η τιμή μέχρι το βράδυ είχε ήδη περάσει 90-100 pips προς μία κατεύθυνση, και το TS δίνει ένα σήμα για να εισέλθει στην αγορά στην ίδια κατεύθυνση, τότε είναι λογικό να το αγνοήσουμε, οι στατιστικές λένε ότι η κυκλοφορία είναι απίθανο να συνεχιστεί αυτήν την ημέρα.

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

  • Ο αριθμός των κεριών μετά το σχηματισμό του σήματος έχει επίσης σημασία· υπάρχει ακόμη και ένα φίλτρο 5 κεριών, στο οποίο θα σταθούμε λεπτομερέστερα.

Όταν το TS δίνει ένα σήμα, τότε ιδανικά η κατάσταση θα πρέπει να αρχίσει να εξελίσσεται υπέρ μας σχεδόν αμέσως μετά την ολοκλήρωση της συναλλαγής (δηλαδή στα επόμενα 1-3 κεριά). Εάν αυτό δεν συμβεί, τότε όσο περισσότερος χρόνος έχει περάσει από την ολοκλήρωση της συναλλαγής, τόσο λιγότερη επιρροή στην αγορά θα είναι αυτοί οι παράγοντες που είχαν σημασία όταν ο έμπορος εισήλθε στην αγορά. Η επιρροή τους εξασθενεί με την πάροδο του χρόνου.

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

Αυτή η προϋπόθεση ισχύει σχεδόν για όλα τα χρονικά πλαίσια (με εξαίρεση τα m1-m5). Φυσικά, υπάρχει ακόμη πιθανότητα η τιμή, έχοντας κυμανθεί γύρω από ένα σημάδι, να κινηθεί προς τη σωστή κατεύθυνση, αλλά η επιλογή μας είναι η σταθερότητα. Είναι καλύτερα να θυσιάσετε μερικές κερδοφόρες συναλλαγές, αλλά αποφύγετε 3-5 ασύμφορες.

Συνοψίζοντας

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

Η επιλογή ενός κατάλληλου οχήματος δεν είναι δύσκολη· επιπλέον, μπορείτε να βρείτε καλά λειτουργικά συστήματα στον δημόσιο τομέα. Μπορείτε επίσης να ανησυχείτε για τη δημιουργία της δικής σας στρατηγικής, ειδικά επειδή αυτό δεν απαιτεί γνώση γλωσσών προγραμματισμού, απλά πρέπει να έχετε μια ιδέα και τουλάχιστον βασικές γνώσεις για το πώς λειτουργεί η αγορά και ποιοι δείκτες χρησιμοποιούνται για ποιους σκοπούς.

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


Μπλουζα