LUIDSPREKER 1: Laten we een programma schrijven met een grafische user interface die ook
omvat label.
En in dit label, gaan we slaan aantal, zij het als een string.
En we gaan dat label te werken opnieuw, en opnieuw, en opnieuw.
Zodat we uiteindelijk tellen onderaan van 50 tot nul.
Glabel, noemde het label, krijgt de waarde van de nieuwe glabel terugkeren.
Nu, ik ben niet van plan om dit te geven etiket waarde nog niet, dus ik zal
zetten in citaat, unquote.
>> Volgende laten we noemen setFont, passeren in het label, en laten we passeren in
specifiek een lettertype genaamd SansSerif 36 punt.
Een lettertype dat gebeurt te bestaan binnen de CS50 apparaat.
Dan eindelijk, nog de toevoeging dat het etiket het raam als volgt.
Nu, laten we overgaan tot het induceren van een lus die gaat tellen
van 50 tot nul.
En binnen die lus, laten we iteratief bijwerken van de label en
weer te geven op het scherm, voor, int i 50 krijgt, i groter dan of gelijk
naar nul, ik min, min.
>> Nu labels, zo blijkt, moet strings.
Maar ik ben eigenlijk te tellen, met getallen.
Dus een of andere manier ga ik hebben om te zetten de integer, i een tekenreeks
vertegenwoordiging pijl.
Om dit te doen laten verklaren char s beugel drie.
Zodat we voldoende opslagruimte twee cijfers, gevolgd door een
null terminator.
Dan laten gesprek s afdrukken f passeren in s, passeren in citaat,
unquote procent i.
Wat aangeeft dat we inderdaad willen om een ​​geheel getal te formatteren.
Tenslotte passeren i zelf.
Met andere woorden, s afdrukken f of koord prent f, net zoals print f, verwacht een
format string gevolgd door een aantal variabelen te vervangen in die
format string.
Maar het accepteert ook is zijn eerste argument, de locatie waar u
wil de string op te slaan dat u vertegenwoordigd
met dat format string.
>> Dus de volgende, laten we verder gaan en roepen ingesteld, label, passeren in label, passeren in s.
Nu, eindelijk, gewoon omdat deze labels breedte gaat veranderen in de tijd als
we aftellen van 50, naar 49, dot, dot, dot, naar 9-8.
Die niet zo breed als een twee-cijferig getal is.
Laten we eens gaan uitzoeken dynamisch wat de breedte van de
etiket moet zijn en dan zorgen dat het is altijd gecentreerd op het scherm.
Ik ga eerst naar een dubbele verklaren, noemde het x, en ik vervolgens naar
opslaat in x, het resultaat van get breedte aan, waarbij de breedte van de
hele venster, minus krijgen breedte, passeren in de label.
Vervolgens te delen het hele ding door twee.
Zo ook ik ga verklaren y te zijn gelijk aan de hoogte van de gehele krijgen
venster, minus get hoogte van slechts de label, en delen die door twee ook.
Tot slot ga ik setlocation noemen, passeren in het etiket
passeren in x, passeren in y.
Het door het zo etiketteren x komma y.
>> Tenslotte, zodat deze niet countdown te snel laten gebeuren
pauzeren, voor zeg, 100 milliseconden tussen elke update van het label.
Om dit te doen, kunnen we de pauze noemen functie, die is gedefinieerd in de
Stanford draagbare bibliotheek, simpelweg als volgt.
>> Laten we nu eens redden, compileren, en uitvoeren van deze programma.
Maak label, dot slash, label.
Daar is mijn user interface aftellen van 50.
Aftellen, en naar beneden, en neer, en gedaan.