georginos1989 Δημοσ. 7 Μαΐου 2010 Δημοσ. 7 Μαΐου 2010 Προσπαθώ να κάνω το γνωστό παιχνίδι super deal στη C. Έχω κάνει τα αρχικά και μια συνάρτηση για να βγάζει τυχαία τα ποσά αλλάέχω κολλήσει. Όταν θα επιλεγουμε μια βαλίτσα, στο πρόγραμμα ένα panel, θα εμφανίζει το ποσο σε ενα label η edit.. Δεν ξέρω πως να κάνω την συνάρτηση που έχω κάνει για τα τυχαία ποσά να εκτελείται μια φορά να επιστρέφει τον πίνακα με τα ποσά ανακατεμένα και μετά όλα τα panel όταν θα τα πατάμε να παίρνουν από αυτόν τον πίνακα τα αντίστοιχα ποσά. Μπορείτε να βοηθήσετε? ---------- Προσθήκη στις 16:17 ---------- Προηγούμενο μήνυμα στις 16:16 ---------- Γιατί λογικά μέσα σε κάθε panel θα πρέπει να γράψουμε κώδικα στον οποίο να καλείται η συνάρτηση και να παίρνει το ποσο, ομος έτσι θα εμφανίζονται ίδια ποσά.. ---------- Προσθήκη στις 21:45 ---------- Προηγούμενο μήνυμα στις 16:17 ---------- Καποιος να βοηθήσει...
javavall Δημοσ. 7 Μαΐου 2010 Δημοσ. 7 Μαΐου 2010 Δεν ξέρω πως να κάνω την συνάρτηση που έχω κάνει για τα τυχαία ποσά να εκτελείται μια φορά να επιστρέφει τον πίνακα με τα ποσά ανακατεμένα και μετά όλα τα panel όταν θα τα πατάμε να παίρνουν από αυτόν τον πίνακα τα αντίστοιχα ποσά Δεν ξέρεις πως να φτιάξεις τυχαία ποσά? Δεν μπορείς να τα επιστρέψεις? Που ακριβώς έχεις το πρόβλημα?
georginos1989 Δημοσ. 7 Μαΐου 2010 Μέλος Δημοσ. 7 Μαΐου 2010 Λοιπόν την συνάρτηση την έχω κάνει... Επιστρέφει ένα πίνακα με τα ποσά ανακατεμένα.. Το θέμα είναι πως θα κάνω τα panel κάθε φορά που θα πατιούνται να παίρνουν ένα ποσό από τον πίνακα....
jstark Δημοσ. 8 Μαΐου 2010 Δημοσ. 8 Μαΐου 2010 Λοιπόν την συνάρτηση την έχω κάνει... Επιστρέφει ένα πίνακα με τα ποσά ανακατεμένα.. Το θέμα είναι πως θα κάνω τα panel κάθε φορά που θα πατιούνται να παίρνουν ένα ποσό από τον πίνακα.... Μια απλή λύση, είναι κάθε φορά που γίνεται επιλογή ενός πανελ, να παίρνεις το "επόμενο" του πίνακα. Αυτό μπορείς να το κάνεις εύκολα, χρησιμοποιώντας μια μεταβλητή (ακέραιο) σαν index του πίνακα. Την αρχικοποιείς στο 0. Όταν επιλεγεί το πανελ, παίρνεις το array[0], κανεις τη δουλειά σου, και μετά αυξάνεις το index κατά ένα. Προσοχή μη βγούμε έξω από τα όρια.
georginos1989 Δημοσ. 8 Μαΐου 2010 Μέλος Δημοσ. 8 Μαΐου 2010 Έτσι το δοκίμασα αλλά δεν μπορεί να δει τον πίνακα από την συνάρτηση με τους τυχαίους.. Πως θα γίνει η συνάρτηση να τρέχει στην αρχή να επιστρέφεται ο πίνακας κάπου και μετά να είναι διαθέσιμος αυτός ο πίνακας?
C6WGMN Δημοσ. 8 Μαΐου 2010 Δημοσ. 8 Μαΐου 2010 http://en.wikipedia.org/wiki/Fisher-Yates_shuffle http://benpfaff.org/writings/clc/shuffle.html
jstark Δημοσ. 8 Μαΐου 2010 Δημοσ. 8 Μαΐου 2010 Έτσι το δοκίμασα αλλά δεν μπορεί να δει τον πίνακα από την συνάρτηση με τους τυχαίους.. Πως θα γίνει η συνάρτηση να τρέχει στην αρχή να επιστρέφεται ο πίνακας κάπου και μετά να είναι διαθέσιμος αυτός ο πίνακας? Προτεινόμενη μεθοδολογία: Βήμα 1. Φτιάχνεις ένα παιχνίδι που λέγεται SuperDeal. Αυτό το παιχνίδι έχει ας πούμε 20 panels τα οποία περιέχουν ποσά, και έχουν επίσης και ένα νούμερο. Οπότε, φτιάξε όσες δομές (structs) νομίζεις πως χρειάζονται για τα "μοντελοποιήσουν" τα παραπάνω. Ενδεικτικά: > typedef struct Panel { int panelIndex; int money; } Panel; > typedef struct SuperDeal { Panel* panels; } SuperDeal; ; Βήμα 2. Έστω πως έφτιαξες τις δομές που χρειάζεσαι. Το επόμενο βήμα είναι να φτιάξεις συναρτήσεις, που θα φτιάχνουν τέτοιου τύπου δομές, καθώς και συναρτήσεις που να τις καταστρέφουν. Καλό θα ήταν επίσης, να υπάρχουν και μερικές συναρτήσεις που να ...τυπώνουν στην οθόνη τις δομές για debugging... Ενδεικτικά: > Panel* create_panel(); Panel* destroy_panel(Panel *p); /* επιστρέφει NULL */ void print_panel(Panel *p); > SuperDeal* create_game(); SuperDeal* destroy_game(SuperDeal* game); /* returns NULL */ SuperDeal* initialize_panels(SuperDeal* game); /* returns game */ Bήμα 3. Αν υπάρχουν οι παραπάνω συναρτήσεις, μετά χρειάζεσαι μια συνάρτηση που να παίρνει ενα SuperDeal struct (το οποιο πρεπει να εχεις φτιαξει), και να ανακατευει τα panels, ή να δημιουργεί panels με τυχαίο τρόπο τέλος πάντων. Ενδεικτικά > int initialize_game(SuperDeal *game); /* επιστρεφει Μή-Μηδενικό αν εχει συμβεί κάτι κακό... */ Δε νομίζω πως θα κολλήσεις κάπου.
C6WGMN Δημοσ. 8 Μαΐου 2010 Δημοσ. 8 Μαΐου 2010 Πολύ πιο απλά: > #include <stdio.h> #include <stdlib.h> void shuffle(double *array, size_t n) { if (n > 1) { size_t i; for (i = 0; i < n - 1; i++) { size_t j = i + rand() / (RAND_MAX / (n - i) + 1); int t = array[j]; array[j] = array[i]; array[i] = t; } } } int main(void) { double evropoula[] = { 0.1, 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750, 1000, 5000, 10000, 25000, 50000, 75000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000 }; size_t i, j = sizeof evropoula / sizeof *evropoula; srand(time(NULL)); shuffle(evropoula, j); for(i = 0; i < j; i++) printf("Balitsa #%u: $%'.2f\n", (unsigned)i + 1, evropoula[i]); return 0; } Με έξοδο: > Balitsa #1: $300.00 Balitsa #2: $5000.00 Balitsa #3: $200.00 Balitsa #4: $50.00 Balitsa #5: $500.00 ... Balitsa #24: $400.00 Balitsa #25: $100.00 Balitsa #26: $500000.00
georginos1989 Δημοσ. 8 Μαΐου 2010 Μέλος Δημοσ. 8 Μαΐου 2010 Λοιπόν παιδιά αυτό που ζητούσα το βρήκα.. Αλλά τώρα δεν μπορώ να κάνω όταν θα επιλέγεις μια βαλίτσα πως θα σβήνει και το αντίστοιχο ποσο... όταν λεω σβήνει εννοω να αλλάζει χρώμα το πανελ
Gbax13 Δημοσ. 8 Μαΐου 2010 Δημοσ. 8 Μαΐου 2010 Ελυσες τα υπόλοιπα για να κολλησεις σε αυτό;... :Ρ θα έλεγα μέσα στο struct για κάθε panel να βάλεις και ένα Boolean για να δείχνει ένα από τα 2 διαθέσιμα χρώματα. Ή να κρατήσεις σε έναν πίνακα τους αριθμούς των ανοιγμενων πάνελ και αφού ζωγραφίσει τα πανελ να αλλάξει το χρώμα στα αντίστοιχα που λέει ο εν λόγω πίνακας. Προσωπικά θα χρησιμοποιούσα το πρώτο σύστημα Sent from my iPod touch using Insomnia.app
georginos1989 Δημοσ. 8 Μαΐου 2010 Μέλος Δημοσ. 8 Μαΐου 2010 Το θέμα είναι ότι το έχω κάνει με άλλο τρόπο το πρόγραμμα πολύ απλό οπότε για να το κάνω οπος λέτε πρέπει να το αλλάξω από την αρχή.. ---------- Προσθήκη στις 20:51 ---------- Προηγούμενο μήνυμα στις 19:09 ---------- Πως θα γίνει να σας ανεβάσω zip 550κβ να δείτε το πρόγραμμα?
georginos1989 Δημοσ. 15 Μαΐου 2010 Μέλος Δημοσ. 15 Μαΐου 2010 Λοιπόν τα παραπάνω προνλήματα τα έλυσα... Τώρα έχω άλλο.. Πώς θα γίνει να ξέρουμε κάθε φορά ποιό panel θα πατιέται? Υπάρχει καμιά συνθήκη για να μπει σε if για ελέγχω τα panel? Και κάτι άλλο όλα αυτά τα onpanelclick είναι συναρτήσεις.. Πως θα γίνει αυτές οι συναρτήσεις να χρησιμοποιούν ίδιες μεταβλητές με το κυρίως πρόγραμμα? Δοκίμασα δείκτες αλλά δεν τα κατάφερα εκτός και αν κάνω κάτι λάθος Μπορούμε πχ από ενα stringgrid σε μια φορμα να πάρουμε τις τιμές του σε αλλο strinGrid σε άλλη φόρμα? Help γιατί έχω κολλήσει....
lion2486 Δημοσ. 15 Μαΐου 2010 Δημοσ. 15 Μαΐου 2010 Και κάτι άλλο όλα αυτά τα onpanelclick είναι συναρτήσεις.. Πως θα γίνει αυτές οι συναρτήσεις να χρησιμοποιούν ίδιες μεταβλητές με το κυρίως πρόγραμμα? Δοκίμασα δείκτες αλλά δεν τα κατάφερα εκτός και αν κάνω κάτι λάθος Δοκίμασε και global μεταβλητές, αλλά καλύτερα οι δείκτες.
georginos1989 Δημοσ. 15 Μαΐου 2010 Μέλος Δημοσ. 15 Μαΐου 2010 Με κώδικα πως ξέρουμε ότι πατήθηκε ένα πανελ? ---------- Προσθήκη στις 16:40 ---------- Προηγούμενο μήνυμα στις 12:47 ---------- Παιδιά help!!!! Έχω κολλήσει.. Πως θα κάνω το πρόγραμμα να επιλέγει στην αρχή 6 πανελ μετά να βγαίνει προσφορά μετα 5 πανελ μετα προσφορα μετα 4 πανελ μετα προσφορα.... ? Εχω κολησει......
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.