virxen75 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 ΕΠΙΛΥΣΗ ======================= 1) Η εφαρμογή κατά την εκκίνηση θα εμφανίζει φόρμα με 11x11=121 αντικείμενα τύπου Button. 2) Τα αντικείμενα buttons μπορείτε να τα τοποθετήσετε σε πίνακα (βλ. τον πίνακα Game από την 2η εργαστηριακή άσκηση). 3) Πως θα καταγράψετε ότι ένα αντικείμενo button κρύβει/παριστάνει πλοίο ή θάλασσα; Είναι ένα πρόβλημα στο οποίο θα πρέπει να δώσετε λύση. 4) Όταν θα εμφανίζεται η φόρμα θα πρέπει ο αλγόριθμός σας να έχει τοποθετήσει όλα τα πλοία στις θέσεις τους: 5) Κάθε φορά που ο παίκτης-χρήστης κάνει «κλικ» σε ένα button θα πρέπει αυτό αφενός να απενεργοποιείται (ιδιότητα enabled), αφετέρου να σημειώνεται με κάποιον τρόπο και μάλιστα διαφορετικό αν το button παριστάνει θάλασσα ή πλοίο. Για παράδειγμα, μπορείτε να αλλάζετε το χρώμα υποβάθρου (ιδιότητα backcolor) και να εμφανίζεται με κόκκινο χρώμα αν υπάρχει πλοίο και με μπλέ χρώμα αν υπάρχει θάλασσα. 6) Επίσης, στο παράθυρο της φόρμας μπορείτε να εμφανίζετε το «Σύνολο πόντων» καθώς και ο «Αριθμός προσπαθειών» που απομένουν. 7) Όταν ο χρήστης εξαντλήσει τον επιτρεπόμενο αριθμό προσπαθειών το πρόγραμμα φανερώνει τις θέσεις όλων των πλοίων και απενεργοποιεί τα buttons. σημείωση =============== οι θέσεις των 5 πλοίων(2 πλοία που καλύπτουν 2-θέσεις, 2 πλοία που καλύπτουν 3-θέσεις και 1 πλοίο που καλύπτει 4-θέσεις). Ο χρήστης είχε δικαίωμα για 11 βολές και ευστόχησε στις 4 πετυχαίνοντας το πλοίο με αριθμό 5. τα 3 πρώτα και το 5 είναι σχεδόν έτοιμα από τα άλλα που έχεις κολλήσει? που είναι η λύση σου από το console application που αναφέρει η άσκηση?
migf1 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 Κατά βάση η διαδικασία είναι απλή... 1. Ακύρωση οποιουδήποτε πλάνου για έξοδο αυτό το ΣαββατοΚύριακο 2. Παρασκευή (από το παρασκευάζω :lol) φρέσκου, αχνιστού καφέ 3. Καταγραφή σχεδιαγράμματος του προβλήματος με χαρτί και μολύβι κι εντοπισμός των τμημάτων στα οποία έχεις πρόβλημα 4. Abstract επίλυσή τους, επίσης στο χαρτί,, με τη βοήθεια των σημειώσεων και των βιβλίων σου, ενδεχομένως και του google... για το κάθε επί μέρους πρόβλημα ξεχωριστά. 5. Μέχρι τότε θα έχει τελειώσει και ο καφές, οπότε σταματάμε και βλέπουμε την ταινία στο Star. 6. Ύπνος 7. Ξύπνημα, (αγορά αν χρειάζεται και) παρασκευή φρέσκου αχνιστού καφέ. 8. Μετατροπή σε κώδικα της abstract λύσης που δώσαμε σε χαρτί την προηγούμενη ημέρα
GKNSB Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 Κατά βάση η διαδικασία είναι απλή... 1. Ακύρωση οποιουδήποτε πλάνου για έξοδο αυτό το ΣαββατοΚύριακο 2. Παρασκευή (από το παρασκευάζω :lol) φρέσκου, αχνιστού καφέ 3. Καταγραφή σχεδιαγράμματος του προβλήματος με χαρτί και μολύβι κι εντοπισμός των τμημάτων στα οποία έχεις πρόβλημα 4. Abstract επίλυσή τους, επίσης στο χαρτί,, με τη βοήθεια των σημειώσεων και των βιβλίων σου, ενδεχομένως και του google... για το κάθε επί μέρους πρόβλημα ξεχωριστά. 5. Μέχρι τότε θα έχει τελειώσει και ο καφές, οπότε σταματάμε και βλέπουμε την ταινία στο Star. 6. Ύπνος 7. Ξύπνημα, (αγορά αν χρειάζεται και) παρασκευή φρέσκου αχνιστού καφέ. 8. Μετατροπή σε κώδικα της abstract λύσης που δώσαμε σε χαρτί την προηγούμενη ημέρα χαχαχαχα αλήθεια με έκανε και γέλασα η διαδικασία/συνταγή. Προσωπικά πάντως προτιμώ αντί για ταινία στο star κάτι σε ταινία στο pc δε μπορώ τις διαφημίσεις
migf1 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 Έχει μια καλή σήμερα πάντως νομίζω το Star το βράδυ (αλήθεια, αλλά δεν θυμάμαι ποια είναι)
derrendevil Δημοσ. 7 Ιανουαρίου 2012 Μέλος Δημοσ. 7 Ιανουαρίου 2012 ΕΠΙΛΥΣΗ ======================= 1) Η εφαρμογή κατά την εκκίνηση θα εμφανίζει φόρμα με 11x11=121 αντικείμενα τύπου Button. 2) Τα αντικείμενα buttons μπορείτε να τα τοποθετήσετε σε πίνακα (βλ. τον πίνακα Game από την 2η εργαστηριακή άσκηση). 3) Πως θα καταγράψετε ότι ένα αντικείμενo button κρύβει/παριστάνει πλοίο ή θάλασσα; Είναι ένα πρόβλημα στο οποίο θα πρέπει να δώσετε λύση. 4) Όταν θα εμφανίζεται η φόρμα θα πρέπει ο αλγόριθμός σας να έχει τοποθετήσει όλα τα πλοία στις θέσεις τους: 5) Κάθε φορά που ο παίκτης-χρήστης κάνει «κλικ» σε ένα button θα πρέπει αυτό αφενός να απενεργοποιείται (ιδιότητα enabled), αφετέρου να σημειώνεται με κάποιον τρόπο και μάλιστα διαφορετικό αν το button παριστάνει θάλασσα ή πλοίο. Για παράδειγμα, μπορείτε να αλλάζετε το χρώμα υποβάθρου (ιδιότητα backcolor) και να εμφανίζεται με κόκκινο χρώμα αν υπάρχει πλοίο και με μπλέ χρώμα αν υπάρχει θάλασσα. 6) Επίσης, στο παράθυρο της φόρμας μπορείτε να εμφανίζετε το «Σύνολο πόντων» καθώς και ο «Αριθμός προσπαθειών» που απομένουν. 7) Όταν ο χρήστης εξαντλήσει τον επιτρεπόμενο αριθμό προσπαθειών το πρόγραμμα φανερώνει τις θέσεις όλων των πλοίων και απενεργοποιεί τα buttons. σημείωση =============== οι θέσεις των 5 πλοίων(2 πλοία που καλύπτουν 2-θέσεις, 2 πλοία που καλύπτουν 3-θέσεις και 1 πλοίο που καλύπτει 4-θέσεις). Ο χρήστης είχε δικαίωμα για 11 βολές και ευστόχησε στις 4 πετυχαίνοντας το πλοίο με αριθμό 5. τα 3 πρώτα και το 5 είναι σχεδόν έτοιμα από τα άλλα που έχεις κολλήσει? που είναι η λύση σου από το console application που αναφέρει η άσκηση? Αυτη τη λυση ειχα δωσει στη τοποτηετηση των πλοιων >Sub putploia(ByVal mhkos2 As Integer, ByVal mhkos3 As Integer, ByVal mhkos4 As Integer) 'τοποθετει τυχαια στον πινακα τα πλοια Dim i, x, y As Byte, rndobject As New Random() For i = 1 To ploia Do x = rndobject.Next(0, 10) 'δινει εναν τυχαιο αριθμο για την μεταβλητη x απο y = rndobject.Next(0, 10) 'δινει εναν τυχαιο αριθμο γθα την μεταβλητη y απο Loop While game(x, y) = -1 'συνεχιζεται η επαναληπση εως ωτου βρεθει κελι χωρις πλοιο If i Mod 2 = 0 And mhkos2 = 2 Then 'ανα μια επαναληψη τοποθετει τα πλοια καθετα η οριζοντια και επισης ελεγχει ποσο θα ειναι το μηκος και αναλογα τοποθετει τα πλοια If x < 9 Then 'ελεγχος για να μην βγει το πλοιο εκτος πινακα game(x, y) = -1 game(x + 1, y) = -1 Else game(x, y) = -1 game(x - 1, y) = -1 End If ElseIf i Mod 2 <> 0 And mhkos2 = 2 Then If y < 9 Then game(x, y) = -1 game(x, y + 1) = -1 Else game(x, y) = -1 game(x, y - 1) = -1 End If ElseIf i Mod 2 = 0 And mhkos3 = 3 Then If x < 14 Then game(x, y) = -1 game(x + 1, y) = -1 game(x + 2, y) = -1 Else game(x, y) = -1 game(x - 1, y) = -1 game(x - 2, y) = -1 End If ElseIf i Mod 2 <> 0 And mhkos3 = 3 Then If y < 14 Then game(x, y) = -1 game(x, y + 1) = -1 game(x, y + 2) = -1 Else game(x, y) = -1 game(x, y - 1) = -1 game(x, y - 2) = -1 End If ElseIf i Mod 2 = 0 And mhkos4 = 4 Then If x < 14 Then game(x, y) = -1 game(x + 1, y) = -1 game(x + 2, y) = -1 game(x + 3, y) = -1 Else game(x, y) = -1 game(x - 1, y) = -1 game(x - 2, y) = -1 game(x - 3, y) = -1 End If ElseIf i Mod 2 <> 0 And mhkos4 = 4 Then If y < 14 Then game(x, y) = -1 game(x, y + 1) = -1 game(x, y + 2) = -1 game(x, y + 3) = -1 Else game(x, y) = -1 game(x, y - 1) = -1 game(x, y - 2) = -1 game(x, y - 3) = -1 End If End If Next End Sub
derrendevil Δημοσ. 7 Ιανουαρίου 2012 Μέλος Δημοσ. 7 Ιανουαρίου 2012 ΕΠΙΛΥΣΗ ======================= 1) Η εφαρμογή κατά την εκκίνηση θα εμφανίζει φόρμα με 11x11=121 αντικείμενα τύπου Button. 2) Τα αντικείμενα buttons μπορείτε να τα τοποθετήσετε σε πίνακα (βλ. τον πίνακα Game από την 2η εργαστηριακή άσκηση). 3) Πως θα καταγράψετε ότι ένα αντικείμενo button κρύβει/παριστάνει πλοίο ή θάλασσα; Είναι ένα πρόβλημα στο οποίο θα πρέπει να δώσετε λύση. 4) Όταν θα εμφανίζεται η φόρμα θα πρέπει ο αλγόριθμός σας να έχει τοποθετήσει όλα τα πλοία στις θέσεις τους: 5) Κάθε φορά που ο παίκτης-χρήστης κάνει «κλικ» σε ένα button θα πρέπει αυτό αφενός να απενεργοποιείται (ιδιότητα enabled), αφετέρου να σημειώνεται με κάποιον τρόπο και μάλιστα διαφορετικό αν το button παριστάνει θάλασσα ή πλοίο. Για παράδειγμα, μπορείτε να αλλάζετε το χρώμα υποβάθρου (ιδιότητα backcolor) και να εμφανίζεται με κόκκινο χρώμα αν υπάρχει πλοίο και με μπλέ χρώμα αν υπάρχει θάλασσα. 6) Επίσης, στο παράθυρο της φόρμας μπορείτε να εμφανίζετε το «Σύνολο πόντων» καθώς και ο «Αριθμός προσπαθειών» που απομένουν. 7) Όταν ο χρήστης εξαντλήσει τον επιτρεπόμενο αριθμό προσπαθειών το πρόγραμμα φανερώνει τις θέσεις όλων των πλοίων και απενεργοποιεί τα buttons. σημείωση =============== οι θέσεις των 5 πλοίων(2 πλοία που καλύπτουν 2-θέσεις, 2 πλοία που καλύπτουν 3-θέσεις και 1 πλοίο που καλύπτει 4-θέσεις). Ο χρήστης είχε δικαίωμα για 11 βολές και ευστόχησε στις 4 πετυχαίνοντας το πλοίο με αριθμό 5. τα 3 πρώτα και το 5 είναι σχεδόν έτοιμα από τα άλλα που έχεις κολλήσει? που είναι η λύση σου από το console application που αναφέρει η άσκηση? Αυτη τη λυση ειχα δωσει στη τοποτηετηση των πλοιων >Sub putploia(ByVal mhkos2 As Integer, ByVal mhkos3 As Integer, ByVal mhkos4 As Integer) 'τοποθετει τυχαια στον πινακα τα πλοια Dim i, x, y As Byte, rndobject As New Random() For i = 1 To ploia Do x = rndobject.Next(0, 10) 'δινει εναν τυχαιο αριθμο για την μεταβλητη x απο y = rndobject.Next(0, 10) 'δινει εναν τυχαιο αριθμο γθα την μεταβλητη y απο Loop While game(x, y) = -1 'συνεχιζεται η επαναληπση εως ωτου βρεθει κελι χωρις πλοιο If i Mod 2 = 0 And mhkos2 = 2 Then 'ανα μια επαναληψη τοποθετει τα πλοια καθετα η οριζοντια και επισης ελεγχει ποσο θα ειναι το μηκος και αναλογα τοποθετει τα πλοια If x < 9 Then 'ελεγχος για να μην βγει το πλοιο εκτος πινακα game(x, y) = -1 game(x + 1, y) = -1 Else game(x, y) = -1 game(x - 1, y) = -1 End If ElseIf i Mod 2 <> 0 And mhkos2 = 2 Then If y < 9 Then game(x, y) = -1 game(x, y + 1) = -1 Else game(x, y) = -1 game(x, y - 1) = -1 End If ElseIf i Mod 2 = 0 And mhkos3 = 3 Then If x < 14 Then game(x, y) = -1 game(x + 1, y) = -1 game(x + 2, y) = -1 Else game(x, y) = -1 game(x - 1, y) = -1 game(x - 2, y) = -1 End If ElseIf i Mod 2 <> 0 And mhkos3 = 3 Then If y < 14 Then game(x, y) = -1 game(x, y + 1) = -1 game(x, y + 2) = -1 Else game(x, y) = -1 game(x, y - 1) = -1 game(x, y - 2) = -1 End If ElseIf i Mod 2 = 0 And mhkos4 = 4 Then If x < 14 Then game(x, y) = -1 game(x + 1, y) = -1 game(x + 2, y) = -1 game(x + 3, y) = -1 Else game(x, y) = -1 game(x - 1, y) = -1 game(x - 2, y) = -1 game(x - 3, y) = -1 End If ElseIf i Mod 2 <> 0 And mhkos4 = 4 Then If y < 14 Then game(x, y) = -1 game(x, y + 1) = -1 game(x, y + 2) = -1 game(x, y + 3) = -1 Else game(x, y) = -1 game(x, y - 1) = -1 game(x, y - 2) = -1 game(x, y - 3) = -1 End If End If Next End Sub Κατά βάση η διαδικασία είναι απλή... 1. Ακύρωση οποιουδήποτε πλάνου για έξοδο αυτό το ΣαββατοΚύριακο 2. Παρασκευή (από το παρασκευάζω :lol) φρέσκου, αχνιστού καφέ 3. Καταγραφή σχεδιαγράμματος του προβλήματος με χαρτί και μολύβι κι εντοπισμός των τμημάτων στα οποία έχεις πρόβλημα 4. Abstract επίλυσή τους, επίσης στο χαρτί,, με τη βοήθεια των σημειώσεων και των βιβλίων σου, ενδεχομένως και του google... για το κάθε επί μέρους πρόβλημα ξεχωριστά. 5. Μέχρι τότε θα έχει τελειώσει και ο καφές, οπότε σταματάμε και βλέπουμε την ταινία στο Star. 6. Ύπνος 7. Ξύπνημα, (αγορά αν χρειάζεται και) παρασκευή φρέσκου αχνιστού καφέ. 8. Μετατροπή σε κώδικα της abstract λύσης που δώσαμε σε χαρτί την προηγούμενη ημέρα Χαχαχαχχαχαχα....απο καφεδες εχω παρει απειρους
virxen75 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 η λύση σου είναι τελείως λάθος. πόσα πλοία και τι διαστάσεων πρέπει να βάλεις στον πίνακα σου?
derrendevil Δημοσ. 7 Ιανουαρίου 2012 Μέλος Δημοσ. 7 Ιανουαρίου 2012 η λύση σου είναι τελείως λάθος. πόσα πλοία και τι διαστάσεων πρέπει να βάλεις στον πίνακα σου? 5 πλοια ,2 των 2 ,2 των 3 και 1 τςν 4
migf1 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 Τον κώδικα που σου έγραψα σε C τον κοίταξες καθόλου; Είναι ακριβώς αυτό που θέλεις να κάνεις. ΥΓ. Η VB έχει structures;
migf1 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 ναι Link Κοίταγα κι εγώ παράλληλα Και structures βλέπω έχει, και ByVal / ByRef parameter passing έχει, και Constants έχει, κι Enum έχει, κι από όλα έχει! Οπότε ο κώδικας σε C που έδωσα είναι θέμα 10 λεπτών να μετατραπεί σε VB για κάποιον που ξέρει τη σύνταξη της VB.
παπι Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 δεν εχω ασχοληθει πολυ με προγραμματισμο... Τι εννοας; Πολυμορφισμο ξερουμε; Βασικα κατα την ταπεινη μου αποψη, οι απο πανω το πανε λαθος. Το κανουν τοσο πολυπλοκο που ουτε οι ιδιοι δεν θα το ελυναν. Λοιπον εχουμε 3) Πως θα καταγράψετε ότι ένα αντικείμενo button κρύβει/παριστάνει πλοίο ή θάλασσα; Είναι ένα πρόβλημα στο οποίο θα πρέπει να δώσετε λύση. 4) Όταν θα εμφανίζεται η φόρμα θα πρέπει ο αλγόριθμός σας να έχει τοποθετήσει όλα τα πλοία στις θέσεις τους: 5) Κάθε φορά που ο παίκτης-χρήστης κάνει «κλικ» σε ένα button θα πρέπει αυτό αφενός να απενεργοποιείται (ιδιότητα enabled), αφετέρου να σημειώνεται με κάποιον τρόπο και μάλιστα διαφορετικό αν το button παριστάνει θάλασσα ή πλοίο. Για παράδειγμα, μπορείτε να αλλάζετε το χρώμα υποβάθρου (ιδιότητα backcolor) και να εμφανίζεται με κόκκινο χρώμα αν υπάρχει πλοίο και με μπλέ χρώμα αν υπάρχει θάλασσα. 3 Πως θα το κανεις αυτο; Μεσου id μεσου tag μεσου whatever; ΟΧΙ , τα βαζεις κατω. Ενα αντικειμενο Button εχει την δυνατοτητα να ξερει αν εχει πισω θαλασσα/ πλοιο; ΟΧΙ. Τοτε θες κατι παραπανω απο ενα button. Φτιαχνεις μια καλση με ονομα KatiParapanwButton με βαση button. Τι θελουμε απο το 3; Να ξερουμε αν εχει θαλασσα/πλοιο. Αρα φτιαχνεις μια property με καποιο enum/string/whatever που θα μας λεει αν εχει θαλασσα/πλοιο ετσι ωστε αν κανουμε το παρακατω να ισχυει if myKatiParapanwButton.TiExei == "8alasa" then mpla mpla 4) Εφοσον εχουμε φτιαξει το παραπανω τοτε το μονο που θα κανουμε ειναι myKatiParapanwButtonPinakas[0][0].TiExei = "8alasa" .. myKatiParapanwButtonPinakas[0][1].TiExei = "plio" klp 5) Καθε φορα που κανει κλικ. Ωραια εδω θελουμε με προεπεξεργασια στο κλικ. Κανουμε ενα override της συναρτηση OnClick στη κλαση KatiParapanwButton. Οταν πατηθει λεει να το απενεργοποιουμε, αρα στην συναρτηση που καναμε override θα βαλουμε την γραμμη this.Enable = false αυτο ηταν. Ααα να βαλουμε και ενα background αν πχ χτυπησαμε πλοιο/θαλασσα, αρα πρεπει να τσεκαρουμε το property TiExei πχ TiExei == "8alasa" then backcolor = Blue TiExei == "plio" then backcolor = Red voila Ενα property και μια override και ελευσες 3 παραπανω εδω σε c# > public class MyButton : Button { public string TiExei { get; set; } public MyButton() { } protected override void OnClick(EventArgs e) { if (TiExei != null) { if (TiExei == "8alasa") BackColor = Color.Blue; if (TiExei == "plio") BackColor = Color.Red; Enabled = false; } base.OnClick(e); } } ctr form > public Form1() { InitializeComponent(); MyButton myButton = new MyButton(); MyButton myButton1 = new MyButton(); Controls.Add(myButton); Controls.Add(myButton1); myButton.TiExei = "8alasa"; myButton1.TiExei = "plio"; myButton.Left = 100; myButton.Top = 100; myButton.Height = 30; myButton.Width = 200; myButton.Left = 100; myButton.Top = 0; myButton.Height = 30; myButton.Width = 200; } Πατησα τα δυο κουμπια και το αποτελεσμα;
virxen75 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 ............... 3 Πως θα το κανεις αυτο; ............. αν δεις τον κώδικα λίγο θα δεις ότι από πίσω κρύβεται ένας πίνακας τυπου SByte > Dim Game(10, 10) As SByte που αναπαριστά τα buttons.Εκεί δηλώνεις την κατασταση π.χ. 1=πλοιο 2=θάλασσα 3=κτυπημενο πλοίο από το κουμπί που πατήθηκε πας στον πίνακα χρησιμοποιώντας το TabIndex > Private Sub MyClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim i, j As Integer i = Int(sender.TabIndex / 11) j = sender.TabIndex Mod 11 If Game(i, j) = 2 Then .............
migf1 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 ... Βασικα κατα την ταπεινη μου αποψη, οι απο πανω το πανε λαθος. Το κανουν τοσο πολυπλοκο που ουτε οι ιδιοι δεν θα το ελυναν. ... Ρε φίλε, κάτι τέτοια πετάς συχνά-πυκνά που όχι μόνο είναι απρόκλητα μειωτικά, αλλά είναι και τόσο άσχετα που ειλικρινά απορώ αν διαβάζεις πρώτα τι έχουν γράψει αυτοί "οι από πάνω" πριν πετάξεις την εξυπνάδα σου! Που ακριβώς είδες το πολύπλοκο σε αυτά που έχουμε γράψει, ή μάλλον που έχω γράψει εγώ για να μη μιλάω εκ μέρους άλλων; Θέλω να μάθω ποια ακριβώς είναι τα πολύπλοκα που έχουμε πει οι από πάνω. Έχω επίσης περιέργεια να μάθω από ποια περίπου ημερομηνία και μετά θεωρούνταιι ο πολυμορφισμός και το overloading απλούστερα των structures. ΥΓ. όσο για το αν μπορούν "οι από πάνω" να φτιάξουν μια φόρμα με κουμπιά που αλλάζουν χρώμα ανάλογα το state του internal πίνακα, τι να πω;
virxen75 Δημοσ. 7 Ιανουαρίου 2012 Δημοσ. 7 Ιανουαρίου 2012 (επεξεργασμένο) το μόνο δύσκολο που έχει η άσκηση είναι η τοποθέτηση των πλοίων και αυτό επειδή στην προηγούμενη άσκηση η συνάρτηση τοποθέτησης πλοίων ήταν λάθος με αποτέλεσμα το λάθος να μεταφέρεται και στην τωρινή άσκηση. μια λύση θα μπορούσε να είναι η εξής ===================================== -τοποθετείς για ευκολία από το μεγαλύτερο στο μικρότερο πλοίο Για κάθε πλοίο ------------------ 1)επιλέγεις τυχαία ένα κελί(χ,y) 1α) αν το κελί εχει πλοίο πας στο βήμα 1) <----ΔΙΟΡΘΩΣΗ 2)επιλέγεις τυχαία μία φορά τοποθέτησης π.χ. 1=πάνω 2=κατω 3=αριστερα 4=δεξια 3)ελέγχεις αν χωράει στο τυχαιο κελι(χ,y) Αν δεν χωράει πας στο βήμα 1) 4)ελέγχεις αν ο χωρος που καταλαμβάνει είναι ελευθερος Αν δεν είναι ελεύθερος πας στο βήμα 1) 5)τοποθετείς το πλοίο στον πίνακα Επόμενο πλοίο μέχρι να τα βάλεις όλα. μια συνάρτηση ελέγχου μόνο για κατευθυνση προς τα πάνω θα μπορούσε να είναι π.χ.έτσι > Private Function shipFits(ByVal x As Integer, ByVal y As Integer, ByVal mikos As Integer, ByVal direction As Integer) As Boolean 'direction----> 1=πάνω 2=κατω 3=αριστερα 4=δεξια 'x=γραμμή αρχής πλοίου y=στήλη αρχής πλοίου Dim i As Integer If direction = 1 Then If (y - mikos + 1) < 0 Then Return False ' εκτος πίνακα For i = (y - mikos + 1) to y If Game(x, i) <> 0 Then Return False 'αν βρει τετράγωνο που δεν είναι ελευθερο Next Return True End If .................. End Function συνέχισε την πιο πάνω συνάρτηση για όλες τις κατευθύνσεις και στείλε τον κώδικα σου εδώ για διορθώσεις καλή συνέχεια. Επεξ/σία 7 Ιανουαρίου 2012 από virxen75
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα