Ανάπτυξη απλής εφαρµογής. Solutions, Projects, GUI, Events, Debugging. New Project Windows Forms Applications Name: ΜyLucky7 Location: C:\... Solution Name: ΜyLucky7 OK (επιλογή έκδοσης του πλαισίου Εφαρµογών.NET) (uncheck create directory for solution) => ηµιουργείται φόρµα Έργα : *.vbproj (1 έργο) Λύση : *.sol (πολλά έργα)
Περιβάλλον Μenu Bar Standard ToolBar (taskbar windows) Κύρια εργαλεία (View) Designer Solution Explorer Properties Toolbox Server Explorer Object Browser Eκτέλεση προγράµµατος Debug/ Start Debugging (µεταγλώτισση σε Assebly, προετοιµάζει για debugging και εκτελεί βλέπετε το εικονίδιο στο taskbar των windows- ) ΗΜΙΟΥΡΓΙΑ φόρµας 1. Μεγάλωµα της φόρµας 2. Καρτέλα Τοolbox (χειριστήρια για Windows)
Κάθε στοιχείο (7) έχει µια ιδιότητα ->ορισµένη στο χρόνο σχεδίασης ->µέσα στο κώδικα ώστε να γίνει ενώ το πρόγραµµα εκτελείται Ιδιότητες -> ορατές / αόρατες Π.χ. Μια ετικέτα ~ 60 ιδιότητες (2 στήλες όνοµα/ρύθµιση) Κατηγορίες (µορφή διάρθρωσης +/-) Categorized/Alphabetical Font Forecolor (Πτυσσόµενο πλαίσιο καταλόγου Αντικειµένων) Public Class Form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PictureBox1.Visible = False 'hide picture Number1.Text = CStr(Int(Rnd() * 10)) 'pick numbers Number2.Text = CStr(Int(Rnd() * 10)) Number3.Text = CStr(Int(Rnd() * 10)) 'if any number is 7 display picture and play sound If (Number1.Text = "7") Or (Number2.Text = "7") Or (Number3.Text = "7") Then PictureBox1.Visible = True Beep() End If End Sub End Class Οι εντολές είναι συγκεντρωµένες σε διαδικασίες π.χ. subroutines
Private Sub End End Sub (common/all, µπλέ, εσοχή) Οι διαδικασίες εκτελούνται όταν λάβουν χώρα κάποια συµβάντα π.χ. το πάτηµα ενός κουµπιού. Οι εντολές γενικότερα, προσεγγίζουν τον προφορικό λόγο. Τυχαίοι αριθµοί µεταξύ του 0..9 Label1.Text = 1 Label1.Text = CStr (Int (Rnd() * 10) ) Rnd() -> τυχαίο αριθµό µεταξύ του 0 και του 1 π.χ. 0.145789 *10=1,45789 Int(1,45789) = 1 CStr(1): 1 Kατόπιν ελέγχετε αν κάποιος από τους 3 τυχαίους είναι ο αριθµός 7. Αν ναι, φανερώνεται η εικόνα και ακούγεται το Beep. (Randomize -χρήση του ρολογιού του συστήµατος- στην φόρµα) File/SaveAll. Eκτελέσιµο αρχείο *.exe (debug build αυτόµατα στο bin/debug / release build βελτιωµένα στο bin/release Build/Rebuild MyLucky7. Άσκηση 1 η Στην παρακάτω διεύθυνση θα βρείτε ένα project υλοποιηµένο σε VB.NET το οποίο υλοποιεί το τυχερό παιχνίδι. http://erodios.it.teithe.gr/kourou/lucky7.rar Ο χρήστης πατώντας το spin αλλάζει τα τρία τυχερά νούµερα και κανονικά θα έπρεπε να εµφανίζει την εικόνα κάθε φορά που έστω και ένα νούµερο είναι 7. Παρόλα αυτά, όπως θα συνειδητοποιήσετε δοκιµάζοντας το υπάρχει κάποιο λάθος στον κώδικα και το παιχνίδι δεν λειτουργεί σωστά. Α) ιορθώστε µε την βοήθεια του debugger τα λάθη ώστε το παιχνίδι να λειτουργεί σωστά.
View/Toolbars/Debug Ορισµός σηµείου διακοπής breakpoint Start debugging (ποντίκι στο σηµείο που µας ενδιαφέρει για να δούµε τιµές/ιδιότητες) Step Into (Debug/Windows/Autos : µεταβλητές/ιδιότητες) ( εξί κλίκ στην µεταβλητή και add watch Stop debugging Β) Προσθέστε στη φόρµα ένα TextBox στο οποίο δεν θα µπορεί ο χρήστης να γράψει. Αρχικά θα έχει τιµή 0 και για κάθε «7» που θα πετυχαίνει ο χρήστης θα προστίθενται 10 πόντοι. Σε περίπτωση που πετύχει τρία «7» τότε θα προστίθενται και άλλοι 100. (100+3*10=130) ReadOnly Dim Counter As Integer Γ) Όταν ο χρήστης πατήσει 10 φορές το spin να εµφανίζεται ένα µήνυµα µε τους πόντους του και να απενεργοποιείται το κουµπί «spin». MsgBox( "Your points are:" & CStr(Counter7) ) ΚουµπίπουΠατήθηκε = MsgBox(Μήνυµα, Κουµπιά, Τίτλος) MsgBox("Your points are:" & CStr(Counter7),, "GameOver")
) Προσθέστε στη φόρµα ένα κουµπί «Restart» πού όταν θα το πατάει ο χρήστης θα µηδενίζονται οι πόντοι του, θα µηδενίζονται οι 10 προσπάθειες spin (από το ζητούµενο Γ) και θα ενεργοποιείται (αν έχει απενεργοποιηθεί) το κουµπί «spin» Άσκηση 2 η Κάντε ότι και στην 1 η άσκηση µε java σε περιβάλλον NetBeans. Ο αρχικός κώδικας βρίσκεται στη παρακάτω διεύθυνση: http://erodios.it.teithe.gr/kourou/lucky7java.rar
NETBEANS - GUI BUILDING http://netbeans.org/kb/docs/java/gui-functionality.html File / New Project Choose Project In the Categories pane, select the Java node. In the Projects pane, choose Java Application. Click Next. 1. Type ΜyLucky7UI in the Project Name field and specify a path e.g. in your home directory as the project location. 2. (Optional) Select the Use Dedicated Folder for Storing Libraries checkbox and specify the location for the libraries folder. Ensure that the Set as Main Project checkbox is selected. 3. Deselect the Create Main Class checkbox if it is selected. 4. Click Finish. Building the Front End Create a JFrame container 1. In the Projects window, right-click the ΜyLucky7UI node and choose New > JFrame Form. 2. Enter ΜyLucky7UI as the class name. 3. Enter my.μylucky7ui as the package. 4. Click Finish. Palette (.. swing controls..) jlabel, jbutton.. Functionality System.exit(0); jlabel1.settext( 0 ); To run the program in the IDE: 1. Choose Run > Run Main Project 2. If you get a window informing you that Project ΜyLucky7UI does not have a main class set, then you should select my.μylucky7ui.μylucky7ui as the main class in the same window and click the OK button. To run the program outside of the IDE: 1. Choose Run > Clean and Build Main Project (Shift-F11) to build the application JAR file. 2. Using your system's file explorer or file manager, navigate to the ΜyLucky7UI /dist directory. 3. Double-click ΜyLucky7UI.jar file.
package my.lucky7; import java.util.random; /** * * @author VK */ public class Lucky7UI extends javax.swing.jframe { /** Creates new form Lucky7UI */ public Lucky7UI() { initcomponents(); /** This method is called from within the constructor to initialize the form. private void initcomponents() { jbutton1 = new javax.swing.jbutton(); jbutton2 = new javax.swing.jbutton(); jlabel1 = new javax.swing.jlabel(); jlabel2 = new javax.swing.jlabel(); jlabel3 = new javax.swing.jlabel(); jlabel4 = new javax.swing.jlabel(); jradiobutton1 = new javax.swing.jradiobutton(); setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close); jbutton1.settext("spin"); jbutton1.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent evt) { jbutton1actionperformed(evt); ); jbutton2.settext("end"); jbutton2.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent evt) { jbutton2actionperformed(evt); ); jlabel1.setfont(new java.awt.font("times New Roman", 1, 24)); jlabel1.sethorizontalalignment(javax.swing.swingconstants.center); jlabel1.settext("0"); jlabel1.setborder(javax.swing.borderfactory.createetchedborder()); jlabel2.setfont(new java.awt.font("times New Roman", 1, 24)); jlabel2.sethorizontalalignment(javax.swing.swingconstants.center); jlabel2.settext("0"); jlabel2.setborder(javax.swing.borderfactory.createetchedborder()); jlabel3.setfont(new java.awt.font("times New Roman", 1, 24)); jlabel3.sethorizontalalignment(javax.swing.swingconstants.center); jlabel3.settext("0"); jlabel3.setborder(javax.swing.borderfactory.createetchedborder()); jlabel4.setfont(new java.awt.font("arial", 1, 18)); jlabel4.setforeground(new java.awt.color(153, 0, 153)); jlabel4.settext("lucky Seven");
jradiobutton1.settext("jradiobutton1"); jradiobutton1.setcontentareafilled(false); jradiobutton1.seticon(new javax.swing.imageicon("c:\\documents and Settings\\Media Pc\\My Documents\\VASSILADA\\TEI 2010-2011\\EFARMOGES\\LAB\\LAB1\\Lab1- net\\lucky7\\src\\my\\lucky7\\paycoins.jpg")); // NOI18N jradiobutton1.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent evt) { jradiobutton1actionperformed(evt); ); javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane()); getcontentpane().setlayout(layout); layout.sethorizontalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addgap(25, 25, 25).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false).addcomponent(jbutton1, javax.swing.grouplayout.alignment.leading, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, Short.MAX_VALUE).addComponent(jButton2, javax.swing.grouplayout.alignment.leading, javax.swing.grouplayout.default_size, 152, Short.MAX_VALUE)).addComponent(jLabel4, javax.swing.grouplayout.default_size, 182, Short.MAX_VALUE)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(jLabel1, javax.swing.grouplayout.preferred_size, 37, javax.swing.grouplayout.preferred_size).addgap(38, 38, 38).addComponent(jLabel2, javax.swing.grouplayout.preferred_size, 37, javax.swing.grouplayout.preferred_size).addgap(39, 39, 39).addComponent(jLabel3, javax.swing.grouplayout.preferred_size, 37, javax.swing.grouplayout.preferred_size)).addcomponent(jradiobutton1, javax.swing.grouplayout.preferred_size, 197, javax.swing.grouplayout.preferred_size)).addgap(164, 164, 164)) ); layout.setverticalgroup( layout.createparallelgroup(javax.swing.grouplayout.alignment.leading).addgroup(layout.createsequentialgroup().addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading, false).addgroup(javax.swing.grouplayout.alignment.trailing, layout.createsequentialgroup().addcontainergap(javax.swing.grouplayout.default_size, Short.MAX_VALUE).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel2, javax.swing.grouplayout.preferred_size, 54, javax.swing.grouplayout.preferred_size).addcomponent(jlabel3, javax.swing.grouplayout.preferred_size, 54, javax.swing.grouplayout.preferred_size).addcomponent(jlabel1, javax.swing.grouplayout.preferred_size, 54, javax.swing.grouplayout.preferred_size)).addgap(9, 9, 9)).addGroup(layout.createSequentialGroup().addGap(34, 34, 34).addComponent(jButton1)
.addgap(18, 18, 18).addComponent(jButton2).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel4).addComponent(jRadioButton1, javax.swing.grouplayout.preferred_size, 220, javax.swing.grouplayout.preferred_size)).addcontainergap(23, Short.MAX_VALUE)) ); pack(); // </editor-fold> private void jbutton1actionperformed(java.awt.event.actionevent evt) { jradiobutton1.setvisible(false); Random rand = new Random() ; int num1 = rand.nextint( 10 ) ; //0..9 String cnum = ""+num1 ; jlabel1.settext(cnum); int num2 = rand.nextint( 10 ) ;cnum = ""+num2; jlabel2.settext(cnum); int num3 = rand.nextint( 10 ) ;cnum = ""+num3; jlabel3.settext(cnum); if ((num1==7) (num2==7) (num3==7)) jradiobutton1.setvisible(true); private void jbutton2actionperformed(java.awt.event.actionevent evt) { System.exit(0); public static void main(string args[]) { java.awt.eventqueue.invokelater(new Runnable() { public void run() { new Lucky7UI().setVisible(true); ); // Variables declaration - do not modify private javax.swing.jbutton jbutton1; private javax.swing.jbutton jbutton2; private javax.swing.jlabel jlabel1; private javax.swing.jlabel jlabel2; private javax.swing.jlabel jlabel3; private javax.swing.jlabel jlabel4; private javax.swing.jradiobutton jradiobutton1; // End of variables declaration