Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εδώ και περίπου 2 μήνες έχω αρχίσει και διαβάζω C++.Είχα κάποιες βασικές γνώσεις από το Πανεπιστήμιο (Μαθηματικό) και ήθελα να συνεχίσω μαθαίνοντας κάποια πράγματα μόνη μου σχετικά με τον προγραμματισμό ,για να με βοηθήσουν για δουλειά. Μέχρι στιγμής είμαι σε θέση να λύνω ασκήσεις ( από online πλατφόρμες  codility κλπ) ,παράλληλα διαβάζω από βιβλίο και βλέπω μαθηματα online. Σκοπός μου είναι να μπορέσω να φτιάξω κάτι μόνη μου σε γλώσσα C++, όπως ένα απλό 2D puzzle game  ή οτιδήποτε άλλο. Θα ήθελα μια καθοδήγηση σχετικά με το πώς μπορω να το πετυχω αυτο γιατί από το πολύ google search έχω χαθεί. Με ποιες έννοιες πρεπει να εξοικειωθώ πιο πολύ,που πρέπει να δώσω προσοχή,ι τι άλλο πρέπει να διαβάσω κλπ.

Ευχαριστώ εκ των προτέρων!

Δημοσ. (επεξεργασμένο)

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

 

Οι καθιερωμένες κλάσεις που παρέχει η C++, όπως η string και η vector, είναι πολύ χρήσιμες και πρέπει να τις ξέρεις έστω και μέτρια. Επίσης πρέπει να γνωρίζεις μερικές τεχνικές της βιβλιοθήκης, όπως τα iterators. Τέλος, σιγουρέψου ότι χρησιμοποιείς τουλάχιστον C++11 και όχι παλαιότερη..

 

Χμμ, τι άλλο... α, το algorithm περιέχει πολλές χρήσιμες και εύκολες στη χρήση συναρτήσεις, πχ αν θες να ταξινομήσεις έναν vector απλά κάνεις:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> myArray;
    int input;

    cout << "Give as many integers as you want (0 to stop):" << endl;
    while ((cin >> input) && input != 0) {
        myArray.push_back(input);
    }

    // Αυτή είναι μια από τις συναρτήσεις του algorithm
    sort(myArray.begin(), myArray.end());

    cout << "Here are all the integers you gave me, sorted:" << endl;
    for (int n : myArray) { // ranged-for loop, C++11
        cout << n << ' ';
    }
    cout << endl;

    return 0;
}
Επεξ/σία από GReaperEx
Δημοσ.

https://github.com/miloyip/game-programmer

 

ΥΓ: 10 χαρακτήρες

Ωραία κατηγοριοποίηση!Δώσε μου όμως και μια ακόμη ζωή να τα διαβάσω όλα αυτά !

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

 

Οι καθιερωμένες κλάσεις που παρέχει η C++, όπως η string και η vector, είναι πολύ χρήσιμες και πρέπει να τις ξέρεις έστω και μέτρια. Επίσης πρέπει να γνωρίζεις μερικές τεχνικές της βιβλιοθήκης, όπως τα iterators. Τέλος, σιγουρέψου ότι χρησιμοποιείς τουλάχιστον C++11 και όχι παλαιότερη..

Ο compiler που τρεχω στο codility είναι για C++14 μικρό το κακό κάνεις τη μετατροπή εύκολα!Πολυπλοκότητα,κλάσεις έχω δουλέψει οπότε μένουν τα υπόλοιπα που ανέφερες.

  • Moderators
Δημοσ.

Εγώ δεν έχω καταλάβει τι ακριβώς θέλεις.

 

  1. Να μάθεις προγραμματισμό, και η δημιουργία ενός απλού παιχνιδιού με C++ σου φαίνεται ο πιο διασκεδαστικός τρόπος να το κάνεις.
  2. Να ασχοληθείς με το game development ως χόμπυ.
  3. Να ασχοληθείς με το game development επαγγελματικά.
  4. Να μάθεις C++ because reasons.

Αν είναι το πρώτο, θα σου έλεγα όχι C++. Δοκίμασε να ξεκινήσεις με κάτι πιο απλό όπως Python ή έστω, θου κύριε, Java.

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

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

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


Πολυπλοκότητα,κλάσεις έχω δουλέψει οπότε μένουν τα υπόλοιπα που ανέφερες.

 

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

  • Like 2
Δημοσ.

Εγώ δεν έχω καταλάβει τι ακριβώς θέλεις.

 

 

  • Να μάθεις προγραμματισμό, και η δημιουργία ενός απλού παιχνιδιού με C++ σου φαίνεται ο πιο διασκεδαστικός τρόπος να το κάνεις.
  • Να ασχοληθείς με το game development ως χόμπυ.
  • Να ασχοληθείς με το game development επαγγελματικά.
  • Να μάθεις C++ because reasons.
Αν είναι το πρώτο, θα σου έλεγα όχι C++. Δοκίμασε να ξεκινήσεις με κάτι πιο απλό όπως Python ή έστω, θου κύριε, Java.

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

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

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

 

 

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

Μαθαίνω C++ για λόγους δουλείας οπως ειπα, δηλαδή θέλω να βρω δουλεια πάνω σ αυτο το αντικείμενο σε συνδυασμό με το πτυχίο μαθηματικών.Για να μπορεσω όμως να ζητησω δουλεια θελω να εχω φτιαξει κατι μονη μου για εχω κατι χειροπιαστο δικο μου. Τωρα γιατι επελεξα και ειπα για ενα 2d puzzle game ,γιατί έχει μαθηματικές έννοιες απο πίσω.Φυσικά και δεν θεωρω οτι εχω εξοικειωση στις κλασεις κλπ απλα ξερω να λυνω ασκησεις και να τις καταλαβαινω σαν εννοιες.Αυτο που θελω ειναι να εξοικειωθω οσο πιο πολυ γινεται,

Δημοσ.

Θα σου πρότεινα να κοιτάξεις προς data analysis και σιγα σιγά να αρχίζεις να αποκτάς δεξιότητες γύρο από αυτό, που μέσα σε αυτές, εννοτείται, είναι και ο προγραμματισμός. Το έχεις σκεφτεί; Θα μπορέσεις να συνδιάσεις και τις γνώσεις που έχεις σαν μαθηματικός αλλά και το μεράκι που φαίνεται να έχεις για προγραμματισμό.

  • Like 1
Δημοσ.

Τωρα γιατι επελεξα και ειπα για ενα 2d puzzle game ,γιατί έχει μαθηματικές έννοιες απο πίσω.

 

Ακόμα και δικό σου 2D engine να φτιάξεις, τα μαθηματικά που χρειάζεται κάτι τέτοιο δεν είναι τίποτα το ιδιαίτερο. Κυρίως γραμμική άλγεβρα και τριγωνομετρία θα χρειαζεται κατι τετοιο. That said, θέλει πολύ δουλειά, άλλα θα μάθεις και πολλά πράγματα (για C++ και προγραμματισμό γενικά) αν το επιχειρήσεις.
 
Αν είσαι οκ με αυτό, πασο, αλλα αν θες να εφαρμοσεις τις γνωσεις σου σε κατι πιο μαθηματικα απαιτητικο, το data analysis που προταθηκε δεν ειναι ασχημη ιδεα.
 
ΥΓ: Aν δεν το ξερεις ηδη, checkαρε αυτο το site: https://projecteuler.net/. Math-heavy programming challenges (εχει φαση, εκει εκανα τα πρωτα βηματα μου στον προγραμματισμο μεχρι που εγινε too math-heavy για εμενα :P).
Δημοσ.

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

Μόνο αυτό!

Δεν είναι καθόλου απλό! Αν και δεν κάνει και πολλά!

Δημοσ.

Ευχαριστώ πολύ για τις απαντήσεις σας..

 

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

Ωραίο ακούγεται αλλά το θέμα είναι το πώς θα φτάσω μέχρι εκεί τι πρέπει να διαβασω πιο συγκεκριμένα.

 

Θα σου πρότεινα να κοιτάξεις προς data analysis και σιγα σιγά να αρχίζεις να αποκτάς δεξιότητες γύρο από αυτό, που μέσα σε αυτές, εννοτείται, είναι και ο προγραμματισμός. Το έχεις σκεφτεί; Θα μπορέσεις να συνδιάσεις και τις γνώσεις που έχεις σαν μαθηματικός αλλά και το μεράκι που φαίνεται να έχεις για προγραμματισμό.

Η αλήθεια είναι πως αποφάσισα να ασχοληθώ πιο βαθιά με τον προγραμματισμό δεν σκέφτομαι κάτι άλλο!

Δημοσ.

H C++ δεν είναι το ζήτημα. Αυτή είναι το εργαλείο για να δουλέψει το όχημα. Το όχημα όμως θέλει πολύ διάβασμα. Ή το πας από την αρχή, ή ζητάς κάτι ενδιάμεσο, έτοιμο. Πας για framework.

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

Διάλεξε λοιπόν!

 

 

 

Δημοσ.

Aν δεν θες κατι τοσο δυσκολο/low-level οσο το DirectX/Direct3D που προταθηκε και επισης δεν θες να περιοριζεσαι μονο στα Windows, θα προτεινα το SFML. Πιστευω πως ταιριαζει στον σκοπο σου περισσοτερο.

 

Διαχειριζεται πολλα πραγματα που κανονικα θα επρεπε να τα κανεις μονος/μονη σου (και μερικα απο αυτα θα ηταν και windows-specific), οπως πχ. δημιουργια παραθυρου, γραφικα, text rendering, sprite rendering, event handling, αναπαραγωγη ηχων, etc etc...

 

Αυτο ετσι ωστε να μπορεις να επικεντρωθεις στις πιο high-level προκλησεις που εχει η δημιουργια ενος engine/παιχνιδιου.

 

PS: Εαν θες οπωσδηποτε να χρησιμοποιησεις low-level graphics API, το SFML σου δινει τη δυνατοτητα να διαχειριστεις εσυ το rendering με OpenGL που ειναι και cross-platform (και IMO ειναι πιο ευκολα κατανοητο απο το D3D), εχοντας παραλληλα τις αλλες διευκολυνσεις του SFML.

  • Like 1
Δημοσ.

Μαθαίνω C++ για λόγους δουλείας οπως ειπα, δηλαδή θέλω να βρω δουλεια πάνω σ αυτο το αντικείμενο σε συνδυασμό με το πτυχίο μαθηματικών.Για να μπορεσω όμως να ζητησω δουλεια θελω να εχω φτιαξει κατι μονη μου για εχω κατι χειροπιαστο δικο μου. Τωρα γιατι επελεξα και ειπα για ενα 2d puzzle game ,γιατί έχει μαθηματικές έννοιες απο πίσω.Φυσικά και δεν θεωρω οτι εχω εξοικειωση στις κλασεις κλπ απλα ξερω να λυνω ασκησεις και να τις καταλαβαινω σαν εννοιες.Αυτο που θελω ειναι να εξοικειωθω οσο πιο πολυ γινεται,

 

Αν μπορείς γίνε λίγο πιο σαφής.

Υπάρχει συγκεκριμένη εταιρία που ζητά γνώσεις C++ και σκοπεύεις να προσληφθείς σε αυτή ?

Γιατί προγράμματα μπορείς να φτιάξεις και με πολλές άλλες γλώσσες, ανεξάρτητα του αν τα προγράμματα αυτά θα αφορούν τα μαθηματικά αυτά καθ' αυτά ή άλλα πράγματα.

 

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

 

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

 

Τέλος όσων αφορά το 2D game:

 

Άμα θες να το φτιάξεις "απ το μηδέν" χωρίς τη χρήση κάποιας game engine, ίσως να επέλεξες λάθος project για πρώτο. Και αυτό επειδή τα video games είναι ολόκληρο κεφάλαιο του προγραμματισμού, εξειδικευμένο. Άνετα γεμίζουν 800+ σελίδες οι γενικές θεμελιώδεις γνώσεις του game development, χωρίς να καταπιαστούμε εις βάθος σε διάφορους τομείς. (ai, γραφικά, κτλπ)

Αν σε ενδιαφέρει να μάθεις κάποια θεμελιώδη πράγματα για το πως να φτιάξεις video game με τη c++, μπορείς να ξεκινήσεις διαβάζοντας αυτό:

 

https://www.amazon.com/Game-Coding-Complete-Fourth-McShaffry/dp/1133776574

 

Τα πράγματα όμως που θα πρέπει να μάθεις είναι τόσα πολλά, που δε μπορούμε να στα πούμε σε ένα forum post. Ξεκίνα το διάβασμα, και ότι απορίες έχεις, μπαίνε και ρώτα.

 

Ωραίο ακούγεται αλλά το θέμα είναι το πώς θα φτάσω μέχρι εκεί τι πρέπει να διαβασω πιο συγκεκριμένα.

Σπάσε το πρόβλημα σε υπό-προβλήματα.

Βασική δεξιότητα που θα κληθείς να την αναπτύξεις στο προγραμματισμό.

 

Τι είναι το τετράγωνο που θέλουμε να κινείται στην οθόνη ?

Ένας δυσδιάστατος αριθμός pixels με το ίδιο μήκος και στις 2 διαστάσεις.

 

Τι είναι η οθόνη ? Ένα παραλληλόγραμμο από pixels. 

 

Ίσως να μπορούσες να φτιάξεις ένα δυσδιάστατο array, με τη κάθε διάσταση του array να αντιστοιχεί σε μια διάσταση της οθόνης, και το κάθε στοιχείο του array σε ένα pixel... 

;)

 

Τα υπόλοιπα βρες τα μόνη σου.

 

 

 

Η αλήθεια είναι πως αποφάσισα να ασχοληθώ πιο βαθιά με τον προγραμματισμό δεν σκέφτομαι κάτι άλλο!

 

Το πρωτεύον που σε απασχολεί τι είναι ?

 

1. Να βρεις εύκολα θέση εργασίας στην Ελλάδα ?

2. Να μπορείς να φτιάχνεις κάτι συγκεκριμένο ? (τι?)

3. Να δουλέψεις ως ελεύθερη επαγγελματίας φτιάχνοντας εφαρμογές κατά παραγγελία ?

 

 

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

 

Αν είναι το 2, πες μας μερικά λόγια παραπάνω για το τι θες να φτιάχνεις.

 

Αν είναι το 3 ίσως να σου χρειαστεί η c++ σε κάποιες περιπτώσεις αλλά μάλλον σπάνιες. Οι περιπτώσεις που θα τύχει να μη μπορούν γλώσσες όπως η Java ή η C#  να κάνουν κάτι που θα σου ζητηθεί, είναι εξειδικευμένες και λίγες. (πχ το να φτιάξεις custom driver για ένα περιφερειακό hardware, να προγραμματίσεις το τσιπ μιας ηλεκτρονικής συσκευής-πατέντας που έφτιαξε κάποιος τρελός επιστήμονας...) Κυρίως μια τέτοια γλώσσα όπως η C++ χρησιμοποιείται για τέτοιου χαμηλού επιπέδου εργασίες σε hardware, και στην Ελλάδα τουλάχιστον δε παράγουμε hardware. Υπάρχουν και κάποιες άλλες περιπτώσεις που δε θα είναι κατάλληλες άλλες ευκολότερες γλώσσες, αλλά μιλάμε για υποπερίπτωση της υποπερίπτωσης.

  • Like 2

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...