1
2
3
4
5
6
7
8
9
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.