bellduck Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 Hei! Lager et lite program/spill og trenger en timer som teller ned fra 60 sec. Noen som vet hvordan man lager det? Gjerne slik at det kommer opp en MsgBox til slutt som inneholder informasjon fra en Label Takk på forhånd for svar! Mvh Halvard Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 Legg til en timer på formen. Sett den til å telle ned en eller annen verdi, sett intervall til 1000 (1000 ms = 1 s) En ting alle burde tenke på når en lager GUI programmer: GUI-kontroller er ikke et egnet sted å lagre informasjon for behandling i. GUI brukes for som et grensesnitt for brukeren. Det er derfor sjeldent noen god idé å for eksempel bruke en label som en teller Label1.Text -= 1 Denne koden vil kræsje dersom Label1.Text ikke inneholder et tall counter -= 1 Label1.Text = CStr(counter) Denne koden har ingen muligheter for å feile, siden counter alltid vil inneholde et tall (dersom den er deklarert som et integer) Koden er også raskere, siden det ikke foregår noen implisitt konvertering fra tekst til tall slik som i foregående funksjon. Tenk på GUI som et abstraksjonslag mellom programkoden og brukeren, ikke som en del av programmet. Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 Takk for svar! I og med at jeg er ganske ny innen programmering så forstod jeg ikke helt. Jeg skal altså ha en timer som teller ned (vises i en Label) fra 30 eller 60 sec. Private Sub Timer1_Tick Label1.Text -= 1 End Sub Dette funket ikke I labelen står tallet 60 fra før. Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 Nå sa jeg også at du ikke skulle skrive det ^^ Public Class MainForm Private Counter As Integer Private Const CountStart As Integer = 5 Public Sub New() ' This call is required by the Windows Form Designer. InitializeComponent() ' Initialiser telleren Counter = CountStart CountLabel.Text = CStr(Counter) End Sub Private Sub CountTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CountTimer.Tick If (Counter > 0) Then Counter -= 1 CountLabel.Text = CStr(Counter) End If ' Telleren er nådd null, vis dette ved å farge teksten rød. If Counter = 0 Then CountLabel.ForeColor = Color.Red StartButton.PerformClick() End If End Sub Private Sub StartButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartButton.Click ' Start/stopp telleren CountTimer.Enabled = Not CountTimer.Enabled StartButton.Text = IIf(CountTimer.Enabled, "Stop", "Start") End Sub Private Sub ResetButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ResetButton.Click ' Reset telleren Counter = CountStart CountLabel.ForeColor = SystemColors.ControlText CountLabel.Text = CStr(Counter) End Sub End Class Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 (endret) Takker igjen for svar, men får det fortsatt ikke til... Er CountTimer det samme som Timer bare at du har skiftet navn på den? Og StartButton er en vanlig Button? Skal ha en knapp som kun starter og ikke stopper det skal den gjøre automatisk når timeren har nådd 0. Mvh Halvard Glem det! Hadde bare satt Timer Interval til 10000 istedenfor 1000... Men må fortsatt ha StartButton til å kun starte timeren! Endret 30. desember 2009 av bellduck Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 Du må alltid bytte navn på kontrollene. Hvis du har TextBox1 -> TextBox100 så går du fort surr i hva som er hva. Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 Ja det er sant Men når telleren er nådd null har jeg gjort sånn at det kommer opp en MsgBox, men siden den fortsetter å "telle" til null hele tiden så kommer det en ny hvert sekund. Hvordan får jeg den til å bare komme en gang? If Counter = 0 Then Label1.ForeColor = Color.Red MsgBox("textextextextextext") End If I tilleg kommer det +1 på en teller hver gang en knapp trykkes. Jeg ønsker at tallet som står i den telleren når Counter er nådd null også skal stå i MsgBoxen som popper opp. Hvordan gjør jeg dette? Mvh Halvard Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 For å stoppe telleren, skriver du bare CounterTimer.Stop() For å legge sammen to tekst strenger bruker du & operatøren MsgBox("txtxtxtxtxt" & CStr(CounterUp)) For eksempel. Bruk & for å legge sammen tekst stringer. Vær svært obs over datatypene du bruker, og konverter for å gjøre meningen entydig. Dette kan spare deg for latterlig mye arbeid senere. Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 Ok nå klarte jeg det! Men så var det det med å få StartButton til kun å starte og ikke stoppe timeren. Takker og bukker for kjempegod hjelp et stykke videre inn i VB verden! Mvh Halvard Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 CounterTimer.Start() starter timeren, eventuelt CounterTimer.Enabled = True (gjør samme nytten) Lenke til kommentar
Merko Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 (endret) Ok nå klarte jeg det! Men så var det det med å få StartButton til kun å starte og ikke stoppe timeren. Takker og bukker for kjempegod hjelp et stykke videre inn i VB verden! Mvh Halvard CountTimer.Start() = Starter CountTimer.Stop() = Stopper. Du kan jo ha begge i en knapp om du vil ha en start\pause knapp på samme knapp (dårlig orklart) Feks: If CountTimer.Enabled = True then CountTimer.Stop() else CountTimer.Start() End If Edit: GeirGrusom sniken var før meg. Endret 30. desember 2009 av Merkoen Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 Du vet jeg ikke gjør noe annet enn å snike rundt her ^^ Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 (endret) Du vet jeg ikke gjør noe annet enn å snike rundt her ^^ Hehehe! Kjempeflott! Funker supert nå Dere vet ikke tilfeldigvis hvordan man lager en High-score-greie? Altså f.eks en Label som viser høyeste oppnådde score Mvh Halvard Edit: Noen skriveleif... Endret 30. desember 2009 av bellduck Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 og hvordan gjør man prosjektet om til en kjørbar .exe fil uten installer? Går det? Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 Programfilen ligger i prosjektmappen under bin\Debug Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 Programfilen ligger i prosjektmappen under bin\Debug Hehe, nå vet jeg det også Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 For å legge til hi-score, må du nesten lære deg fil-IO. Fortsett heller med noe enklere. Lenke til kommentar
Merko Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 Jepp er som fyren over sier. Den ligger der du har lagra prosjektet: > WindowsApplication1\bin\Debug Kan jeg spørre hvilket type 'spill' du lager? Det med highscore burde ikke være så vrient..Men litt info om spillet ditt kunne vært kjekkt Lenke til kommentar
bellduck Skrevet 30. desember 2009 Forfatter Del Skrevet 30. desember 2009 (endret) Jepp er som fyren over sier. Den ligger der du har lagra prosjektet: > WindowsApplication1\bin\Debug Kan jeg spørre hvilket type 'spill' du lager? Det med highscore burde ikke være så vrient..Men litt info om spillet ditt kunne vært kjekkt Ok glem det med highscore Laget et lite spill der man kan teste hvor mange tastetrykk man klarer på musa på 30 sec. Egentlig mest for å finne ut hvordan man bruker en timer Har også laget 3 på rad og Stein, saks, papir Man må jo begynne i en ende... Den .exe fila jeg fant under Debug fungerte på pcen jeg sitter med nå (som jeg programmerte den på), men på en av de andre maskinene mine kom det opp en melding om at programmet måtte lukkes. Hva kommer det av? Endret 30. desember 2009 av bellduck Lenke til kommentar
GeirGrusom Skrevet 30. desember 2009 Del Skrevet 30. desember 2009 .NET Framework 3.5 er ikke installert. Installer det, eller sett prosjektet til å være for .NET 2.0. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå