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

Ναυμαχια σε VB Form


derrendevil

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

ΕΠΙΛΥΣΗ

=======================

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 που αναφέρει η άσκηση?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 59
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

:(

 

Κατά βάση η διαδικασία είναι απλή...

 

1. Ακύρωση οποιουδήποτε πλάνου για έξοδο αυτό το ΣαββατοΚύριακο

2. Παρασκευή (από το παρασκευάζω :lol) φρέσκου, αχνιστού καφέ

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

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

5. Μέχρι τότε θα έχει τελειώσει και ο καφές, οπότε σταματάμε και βλέπουμε την ταινία στο Star.

6. Ύπνος

7. Ξύπνημα, (αγορά αν χρειάζεται και) παρασκευή φρέσκου αχνιστού καφέ.

8. Μετατροπή σε κώδικα της abstract λύσης που δώσαμε σε χαρτί την προηγούμενη ημέρα

 

:)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κατά βάση η διαδικασία είναι απλή...

 

1. Ακύρωση οποιουδήποτε πλάνου για έξοδο αυτό το ΣαββατοΚύριακο

2. Παρασκευή (από το παρασκευάζω :lol) φρέσκου, αχνιστού καφέ

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

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

5. Μέχρι τότε θα έχει τελειώσει και ο καφές, οπότε σταματάμε και βλέπουμε την ταινία στο Star.

6. Ύπνος

7. Ξύπνημα, (αγορά αν χρειάζεται και) παρασκευή φρέσκου αχνιστού καφέ.

8. Μετατροπή σε κώδικα της abstract λύσης που δώσαμε σε χαρτί την προηγούμενη ημέρα

 

:)

 

χαχαχαχα αλήθεια με έκανε και γέλασα η διαδικασία/συνταγή. Προσωπικά πάντως προτιμώ αντί για ταινία στο star κάτι σε ταινία στο pc δε μπορώ τις διαφημίσεις :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ΕΠΙΛΥΣΗ

=======================

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) Η εφαρμογή κατά την εκκίνηση θα εμφανίζει φόρμα με 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 λύσης που δώσαμε σε χαρτί την προηγούμενη ημέρα

 

:)

 

 

Χαχαχαχχαχαχα....απο καφεδες εχω παρει απειρους :-(

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ναι

 

Link

 

Κοίταγα κι εγώ παράλληλα :)

Και structures βλέπω έχει, και ByVal / ByRef parameter passing έχει, και Constants έχει, κι Enum έχει, κι από όλα έχει! Οπότε ο κώδικας σε C που έδωσα είναι θέμα 10 λεπτών να μετατραπεί σε VB για κάποιον που ξέρει τη σύνταξη της VB.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

:(

δεν εχω ασχοληθει πολυ με προγραμματισμο...

 

Τι εννοας; Πολυμορφισμο ξερουμε;

 

Βασικα κατα την ταπεινη μου αποψη, οι απο πανω το πανε λαθος. Το κανουν τοσο πολυπλοκο που ουτε οι ιδιοι δεν θα το ελυναν.

 

Λοιπον εχουμε

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;
}

 

Πατησα τα δυο κουμπια και το αποτελεσμα;

post-216584-0-82249700-1325961443_thumb.jpg

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...............

 

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
.............

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

...

Βασικα κατα την ταπεινη μου αποψη, οι απο πανω το πανε λαθος. Το κανουν τοσο πολυπλοκο που ουτε οι ιδιοι δεν θα το ελυναν.

...

Ρε φίλε, κάτι τέτοια πετάς συχνά-πυκνά που όχι μόνο είναι απρόκλητα μειωτικά, αλλά είναι και τόσο άσχετα που ειλικρινά απορώ αν διαβάζεις πρώτα τι έχουν γράψει αυτοί "οι από πάνω" πριν πετάξεις την εξυπνάδα σου!

 

Που ακριβώς είδες το πολύπλοκο σε αυτά που έχουμε γράψει, ή μάλλον που έχω γράψει εγώ για να μη μιλάω εκ μέρους άλλων;

 

Θέλω να μάθω ποια ακριβώς είναι τα πολύπλοκα που έχουμε πει οι από πάνω. Έχω επίσης περιέργεια να μάθω από ποια περίπου ημερομηνία και μετά θεωρούνταιι ο πολυμορφισμός και το overloading απλούστερα των structures.

 

ΥΓ. όσο για το αν μπορούν "οι από πάνω" να φτιάξουν μια φόρμα με κουμπιά που αλλάζουν χρώμα ανάλογα το state του internal πίνακα, τι να πω;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

το μόνο δύσκολο που έχει η άσκηση είναι η τοποθέτηση των πλοίων

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

με αποτέλεσμα το λάθος να μεταφέρεται και στην τωρινή άσκηση.

 

 

μια λύση θα μπορούσε να είναι η εξής

=====================================

-τοποθετείς για ευκολία από το μεγαλύτερο στο μικρότερο πλοίο

 

Για κάθε πλοίο

------------------

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

 

 

συνέχισε την πιο πάνω συνάρτηση για όλες τις κατευθύνσεις και στείλε τον κώδικα σου εδώ για διορθώσεις

 

καλή συνέχεια.

Επεξ/σία από virxen75
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...