תומא לעבעדיק: אַלע רעכט. הי, אַלעמען. איך בין תו ליוועלי. דעם סעמינאַר איז געגאנגען צו זיין שרייבט 2 ד גאַמעס אין C ניצן סדל. אַזוי איך וויסן איר ניטאָ אַלע אַסקינג, יאָ, איך טאַקע ווילן צו שפּילן גאַמעס און מאַכן גאַמעס, אָבער וואָס איז דעם סדל געשעפט? אַזוי סדל איז אַ C ביבליאָטעק. עס שטייט פֿאַר די פּשוט דירעקטמעדיאַ שיכטע. און עס ס אַ קרייַז פּלאַטפאָרמע, שפּיל אַנטוויקלונג ביבליאָטעק. עס אַרבעט אויף ווינדאָוז, מעק, לינוקס, אַפֿילו יאָס און אַנדרויד. עס כאַנדאַלז זאכן ווי צוטריט צו די אַודיאָ סיסטעמס פֿאַר די קאָמפּיוטער, די קלאַוויאַטור, און מויז, דזשויסטיקקס, אויב זיי 'רע אַטאַטשט. אויף רירעוודיק, עס קענען אַפֿילו טאָן די פאַרבינדן ינפּוט און אַלע פון ​​אַז. און פון קורס, עס כאַנדאַלז graphics, צייכענונג זאכן צו דעם עקראַן. אַזוי עס ס זייער וויידלי געניצט, אַפֿילו כאָטש איר זאלט ​​ניט האָבן געהערט פון אים איידער. עס ס געבויט אין, למשל, וואַלוו ס מקור מאָטאָר, וואָס כוחות גאַמעס אַזאַ ווי טויער און מאַנשאַפֿט Fortress 2. עס ס אויך אין אַ זייער גרויס נומער פון ינדיע גאַמעס אַז קומען אויס, אַזוי איך בין יקסייטאַד צו זען וואָס איר אַלע וועט זיין געמאכט מיט אים. דער סעמינאַר צילן זענען צו באַקומען איר שטעלן אויס צו זייַן דעוועלאָפּינג מיט סדל. מיר 'רע געגאנגען צו לערנען ווי צו שאַפֿן אַ שפּיל פֿענצטער. מיר רע געגאנגען צו מאַכן ספּריטעס, וואָס זענען די בילדער אין דיין שפּיל וואָס קענען מאַך אַרום. מיר 'רע געגאנגען צו לערנען ווי צו און ופלעבן די ספּריטעס, אַזוי מאַך זיי אַרום, מאַכן זיי טוישן איבער צייַט. און מיר רע געגאנגען צו לערנען ווי צו כאַפּן קלאַוויאַטור און מויז ינפּוט פון די קאָמפּיוטער. וואָס מיר וועט ניט זיין גערעדט וועגן הייַנט איז 3 ד graphics, ווייַל אַז ס אַ זייער קאָמפּליצירט ונטערטעניק אַז מיר טאָן ניט האָבן צייַט פֿאַר. מיר וועלן נישט לערנען ווי צו שפּילן אַודיאָ אויף אונדזער גאַמעס. און מיר וועט ניט זיין בנין פֿאַר עפּעס אָבער לינוקס. איצט דער קאַוועאַץ עס זענען אַז, אַלעווייַ, דורך דעם סוף דער סעמינאַר, איר וועט זיין באַקוועם מיט די סדל דאַקיומענטיישאַן, אַזוי איר וועט קענען צו גיין רעכענען אויס ווי צו שפּילן אַודיאָ פֿאַר זיך. אויך בנין פֿאַר מעק אָדער פּיסי זאָל אַרבעטן פּונקט דער זעלביקער ווי בנין פֿאַר לינוקס, אָבער די סעטאַפּ ס געגאנגען צו זייַן אַ ביסל אַנדערש. אַזוי איר זאָל קענען צו רעכענען אויס ווי צו טאָן די זאכן דורך דעם סוף פון הייַנט ס סעמינאַר. אַזוי פֿאַר די שטעלן אַרויף, מיר ניטאָ געגאנגען צו נוצן אַ ווירטואַל מאַשין. מיר וואָלט נוצן די קס50 ייד, ווייַל מיר ניטאָ נאָר געגאנגען צו זייַן שרייבן אין סי אבער זינט די ייד איז ניט אַ בלעטערער, ​​מיר קענען נישט מאַכן נייַ פֿענצטער אָדער אַרויסווייַזן graphics אין עס. אַזוי מיר דאַרפֿן אַ ווירטואַל מאַשין. אַזוי איר קענען נאָכגיין די ינסטראַקשאַנז דאָ אין manual.CS50.net/appliance/15 צו ינסטאַלירן דער באַאַמטער קס50 מאַכשער, וואָס איז בלויז אַ לינוקס ווירטואַל מאַשין. און דעמאָלט אַמאָל איר האָבן אַז אַלע שטעלן ופּ-- עס זאל נעמען אַ ביסל בשעת, ווייַל אַ זייער גרויס דאָוונלאָאַד-- איר ניטאָ געגאנגען צו לויפן אין די וום סודאָ פיייק-באַקומען דערהייַנטיקן. און אַז ס טאַקע געגאנגען צו דערהייַנטיקן אַלע די ווייכווארג פּאַקאַדזשאַז אויף דיין ווירטואַל מאַשין. נאָך וואָס, איר ניטאָ געגאנגען צו לויפן סודאָ פיייק-באַקומען ינסטאַלירן, ליבסדל2-2.0-0, ליבסדל2-DBG, ליבסדל2-דעוו, און אַדדיטיאָנאַללי ליבסדל2-בילד-2.0-0, ליבסדל2-בילד-DBG, און ליבסדל2-בילד-דעוו. אזוי וואָס טוט אַז טאָן? אַז בלויז ינסטאָלז די דיבאַג אינפֿאָרמאַציע, דאַקיומענטיישאַן, כעדערז, און בינאַריעס פֿאַר צוויי לייברעריז. רעגולער אַלט, סדל 2.0, און אנדערן ביבליאָטעק גערופֿן סדל בילד, וואָס מיר רע געגאנגען צו זייַן ניצן צו מאַסע בילד טעקעס אין אונדזער שפּיל. אַזוי אַמאָל איר האָבן אַז אויך וואָס, נאָר ווען עס בעט, איר נאָר טיפּ יאָ, שלאָגן קום צו ינסטאַלירן די פּאַקאַדזשאַז, און דעמאָלט איר זאָל זיין גוט צו גיין. אזוי צו באַקומען די פאַרשפּרייטונג קאָד, איר קאַנ-- טאַקע ליב, דעם איז ניט ופּדאַטעד. סיידן איר האָבן אַ גיטהוב אַקקאָונט-- אויב איר האָבן אַ גיטהוב חשבון, איר קענען טאָן דעם גיט קלאָון באַפֿעל צו די רעפּאָ און אַז וועט אָפּלאָדירן די גיט רעפּאָ מיט אַלע די קאָד אין עס, אַזוי אַז איר וועט האָבן די קאָד. אויב איר טאָן ניט האָבן אַ גיטהוב חשבון, וואָס איר זאָל טאָן איז טיפּ ווגיטהטטפּס: //גיטהוב.קאָמ/טליוועלי/סדל סעמינאַר-- און דאָ עס ס דיפפערענט-- /אַרטשיווע/מאַסטער.זיפּ. אַזוי ווידער, אַז ס די פּינטלעך זעלביקער URL, אַחוץ עס ס געגאנגען צו זיין טליוועלי / סדל_סעמינאַר / master.zip און איר 'רע ניצן ווגיט צו אָפּלאָדירן אַז. און דעמאָלט איר קענען בלויז אַנזיפּ אַז אַרקייוו און דעמאָלט איר וועט האָבן אַלע די מקור קאָד. אַזוי נעבעכדיק וועגן אַז. און דעריבער דער קאָד וועט אויך זיין כאָוסטיד אין די קס50 סעמינאַר ס וועב בלאַט אין אַ פּאָר טעג. אַלע רעכט. אזוי ווי טאָן מיר באַקומען סטאַרטעד שרייבן אונדזער אייגן שפּיל? נו, דער ערשטער זאַך מיר רע געגאנגען צו ווילן צו טאָן איז קוקן אין די סדל דאַקיומענטיישאַן. אַזוי דאָ ס די וום. און דאָ ס דער וועב בלאַט. איך ווע נאַוואַגייטיד צו לעבן libsdl.org. וואָס איך בין געגאנגען צו טאָן דאָ איז גיין איבער צו די סיידבאַר, אונטער דאַקיומענטיישאַן, און גיט אויף די וויקי. דעם וועט ברענגען מיר צו די וויקי אַז האט רובֿ פון די דאַקיומענטיישאַן פֿאַר סדל. איבער אויף די סיידבאַר דאָ, מיר רע געגאנגען צו גיט אַפּי דורך קאַטעגאָריע, ווייַל איז געגאנגען צו געבן אונדז אַ פייַן קאַטאַגאָריקאַל מיינונג פון די גאנצע אַפּי פֿאַר סדל. אַזוי פֿאַר בייַשפּיל, מיר האָבן די גרונט יניטיאַליזאַטיאָן און פאַרמאַכן אַראָפּ, אַלע די סאָרט פון אַדמיניסטראַטיווע שטאָפּן פֿאַר ניצן סדל, און דעמאָלט מיר האָבן די אָפּטיילונג פֿאַר Displaying זאכן צו דעם עקראַן. אַז ס ווידעא. ינפּוט געשעענישן, אַז ס געטינג ינפּוט פון די קלאַוויאַטור, געטינג ינפּוט פון די מויז, און די דזשויסטיק, אויב איר האָט עס אַפֿילו. עס ס קראַפט באַמערקונגען פֿאַר זאכן ווי שפּיל קאַנטראָולערז, וואָס מיר ניטאָ ניט געגאנגען צו רעדן וועגן. און דאָ ס אַודיאָ. און דעמאָלט דאָרט ס אַ בינטל פון אנדערע שטאָפּן אַז סדל קענען טאָן פֿאַר איר. אבער הייַנט מיר רע געגאנגען צו פאָקוס אויף די יניטיאַליזאַטיאָן דאָ, Displaying בילדער אין דעם ווידעא אָפּטיילונג, און האַנדלינג ינפּוט געשעענישן. אַזוי די ביסט די הויפּט סעקשאַנז פון דאַקיומענטיישאַן אַז איר זאָל זיין וועריינג וועגן. נאָר פֿאַר שפּאַס, אויב מיר גיין איבער דאָ און גיט אויף אַפּי דורך נאָמען, מיר קענען זען אַ רשימה פון יעדער איין זאַך אין די סדל ביבליאָטעק. אזוי אַלע די פֿעיִקייטן, ענומעראַטיאָנס, סטראַקטשערז, אַ משוגע סומע פון ​​שטאָפּן, אַלפאַבעטיקאַל סדר. און קלאר, ביז איר וויסן איר ניטאָ טאן, דעם איז ניט געגאנגען צו זיין אויך נוציק, וואָס איז וואָס מיר טאָן אַפּי דורך קאַטעגאָריע. אַזוי לאָזן ס באַקומען אנגעהויבן. אַלעווייַ איר ווע שוין דאַונלאָודיד די פאַרשפּרייטונג קאָד. און אַזוי וואָס איר קענען טאָן איז, רעכט דאָ אין די קס50 מאַכשער, נאָר עפענען אַ וואָקזאַל. דאָ מיר גיין. אַזוי איך ווע שוין דאַונלאָודיד די פאַרשפּרייטונג קאָד ניצן די פּאָסטקאָד אופֿן. און איך ווע ונזיפּפּעד עס. אַזוי דאָ עס איז אין די סדל סעמינאַר בעל. אזוי איך בין געגאנגען צו גיין אין אַז Directory. און וואָס מיר זען דאָ איז אַז מיר האָבן זיבן C טעקעס. און דאָס איז געגאנגען צו די קאָד מיר ניטאָ געגאנגען צו זיין קוקן בייַ הייַנט. מיר האָבן אַ מאַקעפילע. און מיר האָבן אַ רעסורסן דירעקטארי וואָס נאָר האט אַ בילד אַז איר וועט זיין געזען באַלד גענוג. אַזוי לאָזן ס עפענען זיך די טעקעס ניצן די ג-רעדאַגירן רעדאַקטאָר. אַזוי איך ווילן צו עפענען אַלע די טעקעס אַז אָנהייבן מיט העלא און סוף מיט .ק. דאָ מיר גיין. אַזוי אַז ס אַ קליינטשיק פֿענצטער, אַזוי מיר ניטאָ געגאנגען צו פּרובירן צו מאַכן אַז ביגער. ניין, עס איז אוועקגעגאנגען. אַלע רעכט. אַזוי דאָ ס דער זייער ערשטער טעקע מיר רע געגאנגען צו קוקן אין. עס ס גערופֿן העללאָ1_סדל.ק. און אַלע דעם טוט איז ינישאַלייז די סדל ביבליאָטעק אַזוי אַז מיר קענען אָנהייבן ניצן עס. ווי וואָלט איר וויסן צו קומען זיך מיט דעם קאָד זיך? נו, אויב מיר קוקן איבער ביי די דאַקיומענטיישאַן און מיר גיין אין די יניטיאַליזאַטיאָן און פאַרמאַכן אַראָפּ אָפּטיילונג, עס ס געגאנגען צו דערציילן אונדז אַלע וועגן ווי צו ינישאַלייז סדל. אזוי באשטימט לייענען דעם עטלעכע אנדערע מאָל. עס ס געגאנגען צו זאָגן איר אַלע וועגן וואָס ס געגאנגען אויף דאָ. אבער דער הויפּט קרוקס פון די ענין איז אַז מיר דאַרפֿן צו רופן דעם פֿונקציע סדל אין עס און פאָרן עס וואָס מינים פון זאכן מיר ווילן דער ביבליאָטעק צו ינישאַלייז. אַזוי אין אונדזער פאַל, מיר רע נאָר געגאנגען צו ינישאַלייז די ווידעא פֿאַר איצט, אַזוי אַז מיר קענען אָנהייבן Displaying בילדער. איבער דאָ, איר קענען זען אויב מיר דריקט אויף אַ סדל אין עס, מיר קענען באַקומען אַפֿילו מער אינפֿאָרמאַציע, כולל די צוריקקומען ווערט. אזוי מיר זען דאָ אַז עס רעטורנעס נול אויף הצלחה. אַזוי אין אונדזער קאָד, מיר רע געגאנגען צו זען אויב עס טוט ניט צוריקקומען נול, און אויב עס טוט ניט צוריקקומען נול, אַזוי עס איז ניט מצליח, דעמאָלט מיר רע געגאנגען צו נאָר דרוקן אַ טעות מיט דעם אנדערע פֿונקציע, סדל באַקומען טעות, וואָס קערט אַ שטריקל דיסקרייבינג די טעות אַז occurred. מיר רע געגאנגען צו דרוקן אַז טעות און דעמאָלט מיר רע נאָר געגאנגען צו אַרויסגאַנג די פּראָגראַם מיט אַ טעות קאָד. דעמאָלט אן אנדער זאַך וואָס מיר דאַרפֿן צו טאָן איז, איידער פּראָגראַם עגזיץ, אויב מיר הצלחה יניטיאַליזעד סדל, מיר נאָר דאַרפֿן צו רופן עס סדל פאַרלאָזן. און אַז ס 'געגאנגען צו שעפּן רייניקונג אַרויף אַלע פון ​​סדל ס ינערלעך רעסורסן פֿאַר אונדז. אזוי די דאַקיומענטיישאַן טהערע-- ווידער, דאָ מיר זענען אין די יניטיאַליזאַטיאָן און פאַרמאַכן אַראָפּ אָפּטיילונג פון די דאַקיומענטיישאַן. איר קענען נאָר גיט אויף די פֿונקציע דאָ, סדל פאַרלאָזן, און איר קענען לייענען אַלע וועגן וואָס ווי געזונט. און אַ פּלאַץ פון די פֿונקציע דאַקיומענטיישאַן בלעטער האָבן לעמאָשל קאָד, אַזוי דעם איז זייער גוט מיטל. באשטימט פאַרברענגען עטלעכע מאָל לייענען טיילן פון דעם וויקי אויב איר ניטאָ געגאנגען צו טאָן דעם פֿאַר אַ פּרויעקט. אַלע רעכט. אַזוי אַז ס אונדזער גאנצע פּראָגראַם. וואָס מיר קענען טאָן איצט יס-- איך בין געגאנגען צו עפענען די מאַקעפילע דאָ, אַזוי איך בין געגאנגען צו נעמען אַ קוק אין ווי אַז מעשים. און עס ס אַ זייער פּשוט מאַקעפילע, ענלעך צו וואָס איר ווע געזען פריער. איינער פון די הויפּט חילוק איז אַז, דאָ, דעם איז געגאנגען צו אַרייַנלייגן די רעזולטאַט פון פליסנדיק דעם באַפֿעל, וואָס איר ווע שוין אינסטאַלירן אויב איר ווע אינסטאַלירן סדל. און דעם איז אַ באַפֿעל אַז ס 'געגאנגען צו דזשענערייט עטלעכע עקסטרע flags פֿאַר די קאַמפּיילער. אין דערצו צו אַז, מיר ניטאָ געבן עס אַלע די געוויינטלעך קאַמאַנדז, ווי ווויל ווי די צוויי קאַמאַנדז. אזוי די -לסדל2-בילד כאַנדאַלז פֿאַרבינדונג אין די סדל בילד ביבליאָטעק. און די -לם אַקטשאַוואַלי כאַנדאַלז פֿאַרבינדונג אין די נאָרמאַל C מאַט ביבליאָטעק. אַזוי מיר זענען נישט געגאנגען צו דאַרפֿן יענע פֿאַר אַלע פון ​​אונדזער C טעקעס, אָבער מיר נאָר שטעלן זיי אין אַזוי אַז מיר קענען נוצן די זעלבע מאַקעפילע פֿאַר אַלץ אָן מאָדיפיקאַטיאָנס. איבער דאָ אין קוואלן, דעם איז ווו איר'ד שטעלן די טעקעס אַז איר זענען געגאנגען צו צונויפנעמען פֿאַר דיין פּרויעקט. אבער זינט יעדער איינער פון מיין C טעקעס דאָ האט אַ הויפּט פֿונקציע, עס ס געגאנגען צו באַקומען צעמישט אויב מיר שטעלן זיי אַלע אין. אזוי איך בין געגאנגען צו נאָר זאָגן, פֿאַר איצט, העללאָ1_סדל.ק, וואָס איז די איינער מיר פּונקט געקוקט אין. אַזוי אויב איך גיין צוריק איבער דאָ, איך קענען טאָן מאַכן. און וואָס עס האט איז עס נאָר קאָמפּילעד אַז ערשטער טעקע. און דעמאָלט מיר קענען דרוקן ./גאַמע, ווייַל עס ס די עקסעקוטאַבלע עס Produced. און אַלע עס האט איז געווען דרוקן יניטיאַליזאַטיאָן מצליח. אַזוי מיר האבן עפּעס רעכט. אבער וואָס איז געווען מין פון נודנע, ווייַל מיר האבן ניט זען אַ פֿענצטער, גאָרנישט איז מאָווינג אַרום. אַזוי גרויס, מיר גאַט סדל יניטיאַליזעד. איצט, לאָזן ס מאַך אויף צו עפּעס אַ ביסל מער טשיקאַווע. אַזוי דאָ מיר האָבן העללאָ2_ווינדאָוו.ק, און דעם איז געגאנגען צו זיין אַ ביסל מער קאָמפּלעקס C פּראָגראַם וואס יניטיאַליזעס סדל פּונקט ווי איידער, חוץ איצט מיר ניטאָ אויך געגאנגען צו ינישאַלייז סדל טייַמער. און דאָס איז געגאנגען צו לאָזן אונדז צוטריט די ינערלעך טייַמער און נוצן פֿעיִקייטן רילייטינג צו צייַט. און דעריבער לאָזן ס קוק אַראָפּ דאָ. וואָס מיר טאָן איז מיר האָבן דעם טייַטל צו אַ סדל פֿענצטער סטרוקט, וואָס איז געגאנגען צו זיין Created by דעם רוף צו די פֿונקציע, סדל שאַפֿן פֿענצטער. איצט, דעם נעמט אַ פּלאַץ פון טענות, אַזוי לאָזן ס גיין קוקן אין די דאַקיומענטיישאַן. אַזוי ווידער, איך בין געגאנגען צו אַפּי דורך קאַטעגאָריע, איך בין גיי אַראָפּ צו וידאו דאָ, און דער ערשטער אָפּטיילונג, Displaying פֿענצטער אַדמיניסטראַציע. אזוי דעם אָפּטיילונג האט אַ טאָן פון שטאָפּן אין עס, אָבער אויב איר קוק דורך די פֿעיִקייטן, איר וועט זען אַז מיסטאָמע דער איינער מיר ווילן איז גערופֿן סדל שאַפֿן פֿענצטער, וואָס כאַפּאַנז צו זיין רעכט אין די שפּיץ. און אַזוי דאָס איז די דאַקיומענטיישאַן פֿאַר דעם פֿונקציע. די פֿענצטער ס געגאנגען צו האָבן אַ טיטל, אַ רענטגענ און י פּאָזיציע אויף דער עקראַן, עס ס געגאנגען צו האָבן אַ ברייט, אַ הייך, און דעמאָלט עס ס געגאנגען צו נעמען עטלעכע flags. איצט, מיר טאָן ניט טאַקע זאָרגן וועגן קיין פון די flags רעכט איצט, אָבער אויב איר געוואלט צו טאָן עפּעס ווי מאַכן אַ פול פאַרשטעלן פֿענצטער, איר קען נעמען אַ קוק אין וואָס. פֿאַר איצט, מיר רע נאָר געגאנגען צו נוצן די ספּעציעל וואַלועס, סדל פֿענצטער פּלוס סענטערד פֿאַר רענטגענ און י אין סדר צו נאָר מאַכן די פֿענצטער אין דעם צענטער פון אונדזער פאַרשטעלן. אַזוי אַז ס וואָס אַז ס טאן. און אויב פֿענצטער כאַפּאַנז צו זיין נאַל, טייַטש עס איז אַ טעות, דעמאָלט ווידער מיר ניטאָ נאָר געגאנגען צו דרוק דעם טעות ניצן סדל באַקומען טעות. און דעמאָלט ווייַל מיר יניטיאַליזעד סדל, מיר איצט דאַרפֿן צו נאָענט עס. אזוי מיר רופן סדל פאַרלאָזן איידער אומגעקערט איינער פֿאַר הויפּט. אַזוי מיר האָבן דעם פֿענצטער עפענען אַלעווייַ. און וואָס מיר רע געגאנגען צו טאָן איז מיר רע געגאנגען צו רופן סדל פֿאַר 5,000 מיליסעקאַנדז, וואָס איז די זעלבע ווי פינף סעקונדעס. און ווען מיר ניטאָ געטאן מיט וואָס, עס ס געגאנגען צו צעשטערן די פֿענצטער, ריין אַרויף די סדל ביבליאָטעק, און אַרויסגאַנג די פּראָגראַם. אַזוי לאָזן ס גיין פאָרויס און געבן אַז אַ שאָס. אַזוי איצט אַנשטאָט פון טשאַנגינג די מאַקעפילע יעדער מאָל, איך קענען נאָר טאָן מאַכן, און דעמאָלט אויף די באַפֿעל שורה, זאָגן קוואלן יקוואַלז און דעמאָלט דער טעקע מיר רע קאַמפּיילינג. אַזוי עס ס העללאָ2_ווינדאָוו.ק. פאַנטאַסטיש. קיין ערראָס. איצט, אויב מיר לויפן אונדזער עקסעקוטאַבלע, מיר זען דעם פֿענצטער. איצט עס זענען אַ ביסל פּראָבלעמס מיט די פֿענצטער. מיר קענען מאַך עס אַרום, אָבער עס האט דעם הינטערגרונט אָפּפאַל ין פון עס. אַזוי מיר האָבן נישט ציען עפּעס, און אַזוי עס ס נאָר פול פון מיסט, וואָס איז שיין פיל וואָס מיר דערוואַרטן. דערצו, מיר קענען ניט פאַרמאַכן די פֿענצטער. איך בין דרינגלעך דעם רענטגענ אין די ווינקל און גאָרנישט ס געשעעניש. אַזוי מיר וועט זען ווי צו פאַרריכטן אַז אין אַ קליין ביסל. אַזוי לאָזן ס פאַרריכטן דעם טייל ווו די פֿענצטער איז פול פון מיסט ערשטער. אַזוי אויב מיר גיין איבער צו העללאָ3_ימאַגע.ק, וואָס מיר קענען זען איז אַז מיר 'ווע צוגעלייגט אַ ביסל מער זאכן דאָ. מיר'ווע צוגעלייגט דעם נייַ כעדער טעקע צו באַקומען די טייַמער פֿעיִקייטן. איך טרעפן מיר האבן אַז אין די לעצטע איינער, אויך, און איך האט ניט דערמאָנען עס. אבער איצט ווייַל מיר ניטאָ ארבעטן מיט בילדער, מיר דאַרפֿן צו אַרייַננעמען די סדל בילד כעדער טעקע ווי געזונט. אַזוי עס ס די זעלבע זאַך ווי איידער, יניטיאַליזינג סדל דאָ, זעלביקער האַנדלען מיט קריייטינג פֿענצטער. מיר ווע געזען אַז איידער איצט. איצט מיר דאַרפֿן צו שאַפֿן עפּעס גערופֿן אַ רענדערער, ​​וואָס סאָרט פון גייט צוזאמען מיט די פֿענצטער. אבער עס ס אַ סאָרט פון אַבסטראַקט כייפעץ אַז ס אין באַשולדיקונג פון טאן אַלע די צייכענונג אַפּעריישאַנז צו די פֿענצטער. און עס אַקשלי קאָראַספּאַנדז צו אַ פּראָגראַם לאָודיד אין די graphics ייַזנוואַרג אין דיין קאָמפּיוטער אָדער דיין טעלעפאָנירן אָדער וועלכער. אזוי די flags מיר ווילן צו פאָרן יט-- און איר קענען קוקן אין די דאַקיומענטיישאַן צו באַקומען מער דעטאַל הערע-- זענען געגאנגען צו זיין סדל ופפירן אַקסעלערייטיד, וואָס מיטל עס ס געגאנגען צו זיין ניצן די graphics ייַזנוואַרג און ניט נאָר עמיאַלייטיד אין ווייכווארג. און מיר רע געגאנגען צו נוצן סדל רענדערער פּרעסענטווסינק. ווסינק איז אַ זאַך וואָס נאָר מאכט דיין graphics קוקן בעסער און פּריווענץ דעם זאַך גערופֿן פאַרשטעלן טעראָר, ווו העלפט פון איין ראַם און האַלב פון די ווייַטער ראַם באַקומען ציען אין דער זעלביקער צייַט און עס קוקט שרעקלעך. אבער ווידער, איר קענען גיין לייענען וועגן אַז אויף דיין אייגן. אזוי מיר האָבן עטלעכע flags דאָ. און אַזוי מיר רע נאָר געגאנגען צו רופן דעם פֿונקציע סדל שאַפֿן רענדערער. מיר 'רע געגאנגען צו געבן עס די פֿענצטער צו קאָנטאַקטירן מיט וואָס רענדערער. נעגאַטיוו איין מיטל מיר טאָן ניט זאָרגן וואָס graphics שאָפער מיר רע געגאנגען צו נוצן. אַזוי אַז זאָל שיין פיל שטענדיק זיין נעגאַטיוו איינער, סייַדן איר וויסן וועגן graphics דריווערס. און דעמאָלט מיר רע נאָר געגאנגען צו פאָרן עס אונדזער flags. אַזוי אויב אַז קערט נאַל, דעמאָלט מיר רע געגאנגען צו דרוקן די טעות ווי געוויינטלעך, אָבער דעמאָלט מיר רע אויך געגאנגען צו צעשטערן די פֿענצטער צו ריין אַרויף די רעסורסן איידער פאַך סדל פאַרלאָזן און אומגעקערט. איצט, די טשיקאַווע טייל דאָ איז ווו מיר מאַסע אונדזער בילד ניצן דעם פֿונקציע ימג_לאָאַד. דאס איז די בלויז פֿונקציע מיר רע געגאנגען צו נוצן פון די סדל בילד ביבליאָטעק. עס ס די נאָר איינער מיר דאַרפֿן. עס ס אַ פֿונקציע וואָס נעמט די שטריקל וואָס איז דער דרך פון קיין בילד מיטל. און עס קענען זיין אַ פּנג, אַ גיף, ביטמאַפּ, קיין פון די זאכן. און אַז ס וואָס דעם פֿונקציע איז אַזוי פייַן. עס קענען שעפּן שיין פיל קיין פֿאָרמאַט. לאָודז עס אין זיקאָרן און סטאָרז עס ווי אַ זאַך גערופֿן אַ סדל ייבערפלאַך. איצט אַ סדל ייבערפלאַך איז בלויז אַ סטרוקט אַז רעפּראַזענץ בילד דאַטן אין זיקאָרן. אַזוי איר קענען לייענען מער וועגן אַז אין די דאַקיומענטיישאַן צוויי. און אויב דאָס ערראָרס, דעמאָלט מיר רע געגאנגען צו טאָן די גאנצע זאַך ווו מיר דרוקן דעם טעות, נאָענט אונדזער רעסורסן, און דעמאָלט פאַרלאָזן דעם פּראָגראַם. איצט די טשיקאַווע זאַך איז, איידער מיר קענען ציען דעם בילד צו די פֿענצטער, מיר דאַרפֿן צו אַקטשאַוואַלי מאַכן עס אַ געוועב. איצט אַ געוועב קאָראַספּאַנדז צו בילד דאַטן לאָודיד אין די Graphic ס ייַזנוואַרג ס זכּרון. אַזוי אַ ייבערפלאַך איז אין הויפּט זכּרון, רעגולער זכּרון וואָס מיר ווע שוין ניצן אַלע זמאַן, און אַ געוועב איז אין דעם באַזונדער ווראַם זכּרון אַז די graphics קאָרט קאָנטראָלס. אזוי מיר רופן דעם פֿונקציע סדל_קרעאַטעטעקסטורעפראָמסורפאַסע. מיר געבן עס אונדזער רענדערער און אונדזער ייבערפלאַך. און דעמאָלט מיר ניטאָ אַקטשאַוואַלי געטאן מיט די ייבערפלאַך, אַזוי מיר רע נאָר געגאנגען צו פּאָטער עס. מיר טאָן ניט דאַרפֿן עס ענימאָר. און דעמאָלט אַזוי אויב דעם רוף ערראָרעד און אומגעקערט נאַל, דעמאָלט מיר רע געגאנגען צו טאָן די גאנצע טעות ריפּאָרטינג זאַך ווידער. אַלע רעכט. דאָ, מיר באַקומען אין עטלעכע פאַקטיש רענדערינג פֿעיִקייטן. אַזוי פאַך סדל_רענדערקלעאַר און פּאַסינג עס די רענדערער פֿאַרבונדן מיט אונדזער פֿענצטער נאָר מאכט די פֿענצטער גיין שוואַרץ. אזוי עס רימוווז אַז אָפּפאַל אַז מיר געזען אין אונדזער פֿענצטער איידער און מאכט עס שוואַרץ. און דעמאָלט מיר רע געגאנגען צו רופן סדל_רענדערקאָפּי, געבן עס אונדזער רענדערער, ​​אונדזער געוועב. און מיר וועט רעדן וועגן וואָס די fields are אין אַ ביסל. אבער אַז ס 'געגאנגען צו נעמען די געוועב דאַטן און קאָפּיע עס אָנטו אונדזער פֿענצטער צו ציען די בילד. אַזוי נאָך מיר ווע געטאן דעם קאָפּיע די דאַטע אַנטו אונדזער פֿענצטער, מיר האָבן צו טאָן דעם עקסטרע פֿונקציע גערופֿן סדל_רענדערפּרעסענט. און דאָס איז טשיקאַווע מחמת דעם געץ זיך אַ טעמע גערופֿן טאָפּל בופפערינג. אַזוי טאָפּל בופפערינג איז אַ טעכניק וואָס מאכט אייער graphics קוקן אַ פּלאַץ בעסער. ווידער, עס פּריווענץ אַז פאַרשטעלן טירינג איך איז געווען גערעדט וועגן פריער, ווו איר האָבן צוויי בופפערס. עס ס אַ צוריק Buffer אין זיקאָרן און אַ פראָנט רשימה. די פראָנט Buffer איז ממש וואָס ס אויף דיין פאַרשטעלן אין דעם מאָמענט. אַזוי מיר טאָן אַלע די ציען ווערייישאַנז, ווי סדל ופפירן קאָפּיע אָדער סדל_רענדערקלעאַר צו די צוריק רשימה. אזוי זיי מאָדיפיצירן זאכן אין דעם צוריק רשימה. דאָ מיר זאל זיין צייכענונג דעם גרין קוואַדראַט צו די צוריק רשימה. דעריבער ווען מיר ניטאָ געטאן טאן אונדזער ופפירן אַפּעריישאַנז, וואָס זאל נעמען אַ טאַקע לאַנג צייַט, וואָס מיר ניטאָ געגאנגען צו טאָן איז באַשטימען די בופפערס. אזוי עס ממש נאָר נעמט די פראָנט Buffer און די צוריק Buffer און סוויטשאַז זיי, אַזוי אַז, ינסטאַנטאַניאַסלי, אין איין אָפּעראַציע, אַנשטאָט פון אפֿשר הונדערטער אָדער טויזנטער, אַלע פון ​​אונדזער ניי רענדערד אַבדזשעקס זענען אויף דער עקראַן. און דעם פּריווענץ זאכן ווי די פאַרשטעלן Refreshing ווען מיר ווע בלויז ציען העלפט פון אונדזער אַבדזשעקס פֿאַר די ראַם. אַזוי אַז ס וואָס מיר דאַרפֿן צו רופן סדל_רענדערפּרעסענט, ווי ווויל ווי סדל_רענדערקאָפּי. ווידער, מיר ניטאָ נאָר געגאנגען צו וואַרטן פֿאַר פינף סעקונדעס. דעמאָלט מיר רע געגאנגען צו ריין אַרויף אונדזער רעסורסן. מיר האָבן גאַנץ אַ ביסל מער דעם צייַט. און דעמאָלט מיר רע נאָר געגאנגען צו אַרויסגאַנג די פּראָגראַם. אַזוי לאָזן ס טאָן אַז. איך בין געגאנגען צו טיפּ מאַכן, און דעמאָלט קוואלן יקוואַלז העללאָ-- דעם איז איצט 3ימאַגע.ק. אַלע רעכט, אַז קאָמפּילעד קיין ערראָרס. און איר קענען זען דאָ איך ווע איצט ציען אויס מיין בילד, העלא, קס50! צו אונדזער פֿענצטער, וואָס דיסאַפּירז נאָך פינף סעקונדעס. איצט, דעם נאָך האט פּראָבלעמס, רעכט? דאס איז ניט אַ גוט אַפּלאַקיישאַן, ווייַל ווען איך פּרובירן צו נאָענט די פֿענצטער, גאָרנישט כאַפּאַנז. אַז רענטגענ איז נאָך נישט אָפּרופיק. אַזוי לאָזן ס נעמען אַ קוק אין די ווייַטער טעקע, העללאָ4אַנימאַטיאָן. אזוי דעם איז דער טעקע אַז ס 'געגאנגען צו פאָרשטעלן מאָווינג און באַוועגונג צו אונדזער בילד. אזוי מיר ניטאָ געגאנגען צו טאָן די זעלבע זאַך ווי פריער, אָנהייבן סדל, מאַכן די פֿענצטער, מאַכן די רענדערער, מאַסע די בילד אין זיקאָרן, מאַכן די געוועב. מיר ווע געזען אַלע פון ​​אַז איידער. איצט, דעם איז נייַ. מיר ניטאָ געגאנגען צו האָבן אַ סטרוקטור גערופֿן אַ סדל רעקט, וואָס איז נאָר אַ גראָדעק. אויב מיר גיין איבער דאָ, מיר קענען טאָן אַ זוכן פֿאַר סדל רעקט, און איר קענען זען עס ס אַ זייער פּשוט סטרוקטור. עס האט אַ רענטגענ, אַ י פֿאַר די לאַגע, און עס האט אַ ברייט און אַ הייך פֿאַר די גרייס פון די גראָדעק. אַזוי וואָס מיר רע געגאנגען צו טאָן איז מיר רע געגאנגען צו דעפינירן דעם סדל רעקט דעסט, פֿאַר דעסטיניישאַן. און דאָס איז דער אָרט אויף דער עקראַן ווו מיר רע געגאנגען צו זייַן צייכענונג אונדזער בילד, רעכט אַזוי אויב מיר רע געגאנגען צו זייַן מאָווינג די בילד אַרום, דעמאָלט די דעסטיניישאַן ווו מיר רע געגאנגען צו ציען די בילד דאַרפֿן צו זיין מאָווינג אַרום. אַזוי מיר רע געגאנגען צו רופן דעם פֿונקציע סדל_קוועריטעקסטורע. און באַמערקן איך בין פּאַסינג די אַדרעס פון דעסט.וו, וואָס איז די ברייט, און דעסט.ה, וואָס איז דער הייך. און אַזוי סדל_קוועריטעקסטורע איז געגאנגען צו קראָם אין די fields די ברייט און די הייך פון אונדזער געוועב. און דעמאָלט וואָס איך בין געגאנגען צו טאָן איז איך בין געגאנגען צו שטעלן דעסט.קס צו זיין פֿענצטער ברייט מינוס דעסט.וו, וואָס איז די ברייט פון די ספּרייט, צעטיילט דורך 2. און דאָס איז געגאנגען צו שטעלן עס אַרויף אַזוי אַז דער בילד איז בישליימעס סענטערד אין אונדזער פֿענצטער, אַלע רעכט? אַזוי איצט איך האָבן אַ י שטעלע. און דאָס איז געגאנגען צו זיין אַ בייַטעוודיק אַז ס טשאַנגינג, ווייַל מיר רע געגאנגען צו זייַן מאָווינג די בילד אין די י ריכטונג. און איצט מיר האָבן עפּעס גערופֿן אַ אַנאַמיישאַן שלייף. אזוי ווי טוט די אַנאַמיישאַן אַרבעט? נו, מענטשלעך אויג קענען דיטעקט 12 בוילעט בילדער אין יעדער רגע, אַלע רעכט? אַזוי אויב איר בליץ 12 בילד קאַרדס בייַ מיר אין אַ רגע, איך געזען יעדער פון די בילדער ווי זייַן אייגן בוילעט יחיד בילד. איצט, אויב איר בליץ מער בילדער אין מיר אין אַ רגע, דעריבער מיין אויג וואָלט אָנהייב צו בלער זיי צוזאַמען און איך וואָלט זע עס ווי באַוועגונג, אָנשטאָט איינער בוילעט בילד. אזוי, למשל, קינאָ און טעלעוויזיע, זיי בליצן בילדער אין איר 24 מאל אַ רגע. אַזוי אַז ס 24 ראָמען פּער רגע. קאָמפּיוטער סקרינז, אויף די אנדערע האַנט, אָפֿט זענען ביי 60 ראָמען פּער רגע. אַז ס זייער דערפרישן גיכקייַט. אַז ס ווי אָפֿט זיי דערפרישן די בילד אויף די פאַרשטעלן. אַזוי אונדזער ציל איז געגאנגען צו זיין 60 ראָמען פּער רגע פֿאַר אונדזער גאַמעס. אַזוי לאָזן ס זען אַז אין די קאָד. אַזוי פֿאַר יעדער ראַם, מיר ניטאָ ערשטער געגאנגען צו קלאָר די פֿענצטער. דעם איז דער גענעראַל מוסטער. איר שטענדיק קלאָר די פֿענצטער יעדער ראַם, און דעמאָלט טאָן אַלע פון ​​דיין צייכענונג אַפּעריישאַנז, און דעמאָלט אין די סוף, טאָן רענדערפּרעסענט צו ווייַזן אַלץ אין דער ראַם. און דעמאָלט איר ניטאָ געגאנגען צו האָבן אַ וואַרטן אין די סוף צו וואַרטן ביז די ווייַטער ראַם זאָל נעמען. אַזוי אויב איך איז געווען טאן אַ פּלאַץ פון קאָמפּלעקס קאַמפּיאַטיישאַן דאָ אַז גענומען מער ווי 16 מיליסעקאַנדז, עס וואָלט זיין אוממעגלעך פֿאַר מיר צו באַקומען אַז וועדליק טעמפּאָ פון 60 אַז איך געוואלט, ווייַל יעדער ראַם איז גענומען צו לאַנג צו צונויפרעכענען. דערצו, מיר ניטאָ טאַקע טאן סאָרט פון אַ נעגלאַדזשאַבאַל סומע פון ​​אַרבעט דאָ, ווייַל עס ס נאָר איין זאַך מיר רע צייכענונג. אזוי איך נאָר וואַרטן 1/60 פון אַ רגע, וואָס איז די לענג פון אַ ראַם אין צווישן ראָמען. אזוי איך בין סאָרט פון פּריטענדינג טאן אַלע מיין אַרבעט נעמט נול צייַט. אבער אין אַ פאַקטיש שפּיל, איר'ד האָבן צו אַראָפּרעכענען די סומע פון ​​צייַט עס האט צו טאָן אַלע דעם ווערק פֿון דיין מנוחה צייַט. אַזוי סייַ ווי סייַ, וואָס בין איך אַקטשאַוואַלי טאן אין דעם שלייף? איך קלאָר די פֿענצטער. איך שטעלן די דעסט.י, וואָס איז אַ ינט צו מיין פאַקטיש י שטעלע וואַרפן אין אַ ינט. איצט, איך ווילן לאָזנ שווימען האַכלאָטע פֿאַר מיין י שטעלע אין מיין שפּיל, אָבער דעמאָלט צו אַקטשאַוואַלי ציען עס אָנטו דעם עקראַן, עס דאַרף ינץ, ווייַל עס ס אין וניץ פון בילדצעלן, אַזוי אַז ס וואָס די געשטאַלט איז פֿאַר. איך בין געגאנגען צו ציען די בילד. אזוי דעם איז די מקור גראָדעק. און דעם איז די דעסטיניישאַן גראָדעק. אַזוי איך דורכגעגאנגען נאַל פֿאַר דער מקור גראָדעק צו זאָגן איך ווילן צו ציען מיין גאנצע געוועב. אבער אויב איר האט אַ פּלאַץ פון טעקסטשערז אין דיין שפּיל און זיי ניטאָ אַלע אין איין גרויס געוועב מאַפּע וואָס איז לאָודיד אין סדל ווי נאָר איינער געוועב, איר קען נוצן אַ מקור גראָדעק צו קלייַבן איינער פון די סמאָלער טעקסטשערז, איינער פון די סמאָלער ספּריטעס, אויס פון אַז גרויס געוועב מאַפּע. אַזוי ווידער, איך בין פּאַסינג מיין ופפירן, מיין געוועב, און איצט די דעסטיניישאַן. דעם איז געגאנגען צו זיין ווו אין די פֿענצטער עס ס געגאנגען צו זייַן ציען. און דעריבער, ווייַל איך בין אַנימאַטינג עפּעס, איך דאַרפֿן באַוועגונג, איך בין געגאנגען צו זייַן אַפּדייטינג די ספּרייט שטעלע אויף יעדער ראַם. אזוי איך האָבן דעם קעסיידערדיק גערופֿן מעגילע גיכקייַט אין וניץ פון בילדצעלן פּער רגע. איצט, יעדער מאָל מיר טאָן אַ באַוועגונג, דער ראַם איז בלויז 1/60 פון אַ רגע. אַזוי איך בין געגאנגען צו טיילן אַז דורך 60. און דעמאָלט, לאָזן ס זען, איך בין סאַבטראַקטינג אַז פֿון י שטעלע. וואָס בין איך סאַבטראַקטינג? מיר וועט באַקומען צו אַז אין אַ רגע. אַזוי דעמאָלט איך ריין אַרויף מיין רעסורסן און דער פּראָגראַם ס איבער. אזוי לאָזן ס מאַכן אַז. אַזוי לאָזן ס גיין אין מאַכן סרקס = העללאָ4 אַנימאַטיאָנ.ק, אַלע רעכט? שפּיל. עס איר גיין. אזוי איך האָבן עס סקראָללינג אַרויף די פֿענצטער, וואָס איז שיין ציכטיק. אבער האַלטן אויף, איך איז געווען סאַבטראַקטינג פון די י שטעלע יעדער מאָל. וואָס ס געגאנגען אויף דאָרט? נו, עס טורנס אויס אַז אין סדל, און אין פאַקט, אין רובֿ קאָמפּיוטער graphics, די אָנהייב פֿאַר די קאָואָרדאַנאַט סיסטעם איז די שפּיץ לינקס פון די פֿענצטער. אזוי די positive רענטגענ ריכטונג גייט אַריבער דיין פֿענצטער צו די רעכט. און די positive און ריכטונג אַקשלי גייט אַראָפּ. אַזוי ווידער, די אָנהייב ס אין די שפּיץ לינקס פון דיין פֿענצטער, Positive י ריכטונג איז אַראָפּ, און positive רענטגענ איז צו די רעכט. אַזוי ווען איך אַראָפּרעכענען פון די י שטעלע, אַז ס געגאנגען צו מאַכן עס גיין אויף די נעגאַטיוו י ריכטונג, וואָס איז זיך די פֿענצטער. אַזוי אַז ס וואָס ס געגאנגען אויף דאָרט. קיל. זאל ס קוק אין די ווייַטער טעקע. דאָ איז די טייל פון די ווייַזן ווו מיר לעסאָף באַקומען אַז רענטגענ אין די ווינקל פון די פֿענצטער אַז ס געמיינט צו נאָענט די פֿענצטער צו אַרבעטן. אַזוי וואָס ס געגאנגען אויף? מיר ינישאַלייז סדל, מאַכן די פֿענצטער, מאַכן די רענדערער, ​​מאַסע די בילד, שאַפֿן דעם געוועב ווי מיר ווע געזען פריער. מיר האָבן די זעלבע דעסטיניישאַן גראָדעק ווי איידער, זעלביקער רוף צו אָנפֿרעג געוועב. אבער דאָס מאָל, מיר ניטאָ דעמאָלט געגאנגען צו צעטיילן די ברייט און די הייך פון אונדזער דעסטיניישאַן דורך 4. דעם בלויז האט דער ווירקונג פון סקיילינג אונדזער בילד אַראָפּ ווען מיר אַרויסווייַזן עס אין די פֿענצטער דורך פיר. אַזוי אַז ס שיין ציכטיק. מיר קענען נאָר וואָג פּונקט ווי אַז. מיר ניטאָ געגאנגען צו אָנהייבן די ספּרייט אין דעם צענטער פון דעם עקראַן. און איצט מיר האָבן רענטגענ און י גיכקייַט און זיי ניטאָ ביידע געגאנגען צו אָנהייבן אין נול. דעם איז די אומרעכט טעקע. איך בין נעבעכדיק. אַזוי אַז ס אַלע אמת. אַז ס אַלע נאָך אין דעם טעקע. מיר האָבן די טיילן דורך 4 און אַלץ. אַזוי דאָ מיר האָבן אונדזער רענטגענ און י שטעלע פֿאַר די צענטער פון די פֿענצטער. און מיר געבן עס אַן ערשט גיכקייַט פון דעם קעסיידערדיק גיכקייַט, וואָס איך גלויבן איז 300 בילדצעלן פּער רגע. איצט, מיר האָבן דעם ינט קען נאָר ווי געזונט זיין אַ בוליאַן גערופֿן נאָענט געבעטן. און אַנשטאָט פון טאן אַ Infinite שלייף אויף אַ טייַמער דאָ, מיר רע געגאנגען צו זייַן אַנימאַטינג ווי לאַנג ווי נאָענט איז ניט געבעטן. אזוי ווי טאָן מיר פּראָצעס געשעענישן? נו, סדל קיוז אַרויף געשעענישן אין אַ פּשאַט ריי הינטער די סינז. און דעריבער יעדער ראַם, מיר קענען דעקוועוע געשעענישן פון אַז ריי ניצן דעם רוף סדל_פּוללעווענט. און ווידער, באשטימט גיין לייענען וועגן דעם אין די דאַקיומענטיישאַן. עס ס אַ פּלאַץ מער דעטאַל און אַ פּלאַץ מער פֿעיִקייטן איר קענען נוצן מיט דעם. מיר פאָרן עס די אַדרעס פון דעם זאַך, סדל_עווענט אַז מיר האָבן דאָ אויף די אָנלייגן. איצט, וואָס איז אַ סדל_עווענט? ווייַל סדל, אויב מיר קוקן אין די דאָקומענטאַטיאָנ-- לאָזן ס זען, אַפּי דורך קאַטעגאָריע, ינפּוט געשעענישן, געשעעניש האַנדלינג, מיר קענען קוקן אין די נומער פון פאַרשידענע געשעענישן דאָ און מיר קענען זען עס ס אַ גאַנץ טאָן פון זיי. אזוי וואָס איז דעם סדל_עווענט זאַך? סדל_עווענט איז אַ פאַרבאַנד. וואַו, וואָס ס אַ פאַרבאַנד? איר ווע מיסטאָמע קיינמאָל געהערט אַז איידער. און אַז ס גוט. א פאַרבאַנד איז מין פון ווי אַ סטרוקט, חוץ אַ סטרוקט האט אַ פּלאַץ פֿאַר אַלע פון זייַן fields און זכּרון, כוועראַז אַ פאַרבאַנד נאָר האט גענוג פּלאַץ צו פּאַסיק דער גרעסטער איינער פון זייַן fields, וואָס מיטל עס קענען בלויז קראָם איינער פון זייַן fields אין אַ צייַט, וואָס מין פון מאכט חוש פֿאַר געשעענישן, רעכט? מיר קענען האָבן אַ קלאַוויאַטור געשעעניש אָדער אַ פֿענצטער געשעעניש, אָבער אַ איין געשעעניש קענען ניט זיין ביידע אַ קלאַוויאַטור געשעעניש און אַ פֿענצטער געשעעניש, אַזוי עס 'ד ווערן נאַריש צו האָבן פּלאַץ פֿאַר ביידע פון ​​די ין אונדזער געשעעניש פאַרבאַנד. אַזוי אויב איר געוואלט צו שאַפֿן דיין אייגן פאַרבאַנד, עס קוקט פּונקט די זעלבע ווי קריייטינג אַ סטרוקט, חוץ אַז מיר נוצן די פאַרבאַנד קיווערד אָנשטאָט דעם סטרוקט קיווערד. און געדענקען, פֿאַר אַלע פון ​​די זאכן ין דיין פאַרבאַנד, די פאַקטיש בייַטעוודיק אַז איז דער פאַרבאַנד קענען נאָר האָבן איינער פון יענע וואַלועס אין אַ צייַט. אַזוי ווי קענען מיר זאָגן וואָס מין פון געשעעניש מיר נאָר פּאַפּט אַוועק פון דעם ריי? נו, מיר קענען פּרובירן פֿאַר עווענט.טיפּע. און אויב אַז איז גלייַך צו סדל_קוויט, מיר וויסן עס ס דער געשעעניש אַז איז דזשענערייטאַד ווען מיר שלאָגן אַז רענטגענ אין די ווינקל פון די פֿענצטער. און מיר קענען שטעלן נאָענט געבעטן יקוואַלז 1. די מנוחה איז נאָר עטלעכע אַנאַמיישאַן אַז איר ווע געזען פריער. אַזוי לאָזן ס גיין פאָרויס און מאַכן דעם און זען ווי גוט עס אַרבעט. אַזוי איך בין געגאנגען צו טיפּ מאַכן און דעמאָלט סרקס = העללאָ5_עווענצ.ק. עס מיר גיין. גאַמעס. איצט, מיר קענען זען עס איז געווען טאַקע פֿאַרקלענערט דורך פיר. און איצט עס ס באַונסינג אַרום. איך האָבן עטלעכע צונויפשטויס דיטעקשאַן געגאנגען אויף מיט די זייטן פון די פֿענצטער אַז מיר קענען נעמען אַ קוק אין. און וואָס כאַפּאַנז ווען איך גיין צו נאָענט עס? עס קלאָוזיז. פאַנטאַסטיש. מיר באקומען אַז געשעעניש. און מיר כאַנדאַלד עס. אַזוי לאָזן ס קוק צוריק בייַ די קאָד. אַזוי ווי האט איך באַקומען עס באַונסינג אַרום ווי אַז? געדענק איך שטעלן ביידע רענטגענ און י טכילעס צו די ספּידז. און גיכקייַט איז אַ positive קעסיידערדיק, אַזוי אַז ס געגאנגען צו באַקומען עס סטאַרטינג אויס גיי אַראָפּ און צו די רעכט. איצט, יעדער ראַם, אין דערצו צו האַנדלינג קיין געשעענישן, וואס זאל האָבן אָקקוררעד, איך בין געגאנגען צו דיטעקט צי מיין ספּרייט איז טריינג צו גיין אויס פון די פֿענצטער. אַזוי מיר קענען טאָן אַז דורך נאָר טשעק קס_פּאָס מיט 0, י_פּאָס 0, און דעמאָלט אויך קס_פּאָס און י_פּאָס מיט פֿענצטער ברייט און פֿענצטער הייך. נאָטיץ איך ווע סאַבטראַקטיד די ברייט פון די ספּרייט. און דעם איז ווייַל אויב איך האט ניט אַראָפּרעכענען די ברייט פון די ספּרייט, עס וואָלט נאָר קאָנטראָלירן אַז דער אָנהייב פון די ספּרייט האט ניט גיין אַרויס די פֿענצטער. אָבער מיר ווילן די גאנצע ברייט פון די ספּרייט צו שטענדיק זיין ין די פֿענצטער און די גאנצע הייך פון די ספּרייט צו שטענדיק זיין ין די פֿענצטער. אַזוי אַז ס וואָס די כיסער איז פֿאַר. א פּלאַץ פון דזשיאַמאַטרי דאָ קענען זיין נוציק צו ציען עס אויס אויף פּאַפּיר מיט די קאָואָרדאַנאַט סיסטעם צו זען וואָס איז געגאנגען אויף. אַזוי אויב איך טאָן קאַלייד, איך נאָר נאָר באַשטעטיק די שטעלע אַזוי אַז עס איז נישט געגאנגען אויס פון דעם עקראַן. און איך בין געגאנגען צו, אויב עס באַונסיז אויף איין פון די סידעוואַללס, איך בין געגאנגען צו ניגייט די רענטגענ גיכקייַט אַזוי אַז עס סטאַרץ באַונסינג אין די אנדערע ריכטונג. און סימאַלערלי, אויב עס היץ די שפּיץ אָדער די דנאָ, איך בין געגאנגען צו שטעלן די י גיכקייַט גלייַך צו די נעגאַטיוו און גיכקייַט, אַזוי אַז עס וועט אָפּשפּרונג צוריק. אַזוי אַז ס פּונקט ווי מיר גאַט וואָס דאָ. און די אַפּדייטינג שטעלעס פּונקט ווי מיר ווע געזען פריער, צעטיילן דורך 60, ווייַל מיר ניטאָ בלויז האַנדלינג 1/60 פון אַ רגע. און דעמאָלט רענדערינג, פּונקט דער זעלביקער ווי איידער. און אַזוי אַז ס אַלץ וואָס איז געגאנגען אויף דעם טעקע. אַזוי אַז ס ווי מיר טאָן געשעענישן. די הויפּט זאַך צו נעמען אַוועק דאָ איז דאָס סדל_פּוללעווענט פֿונקציע. און איר זאָל באשטימט לייענען די דאַקיומענטיישאַן מער וועגן סדל_עווענט דער יוניאַן, ווייַל דעם דאַטן טיפּ איז זייער, זייער וויכטיק, ווייַל מיר נוצן עס פֿאַר אַלע סאָרץ פון געשעענישן. לעמאָשל, מיר נוצן עס פֿאַר קלאַוויאַטור געשעענישן, וואָס איז וואָס דעם טעקע איז פֿאַר. אזוי וואָס טאָן מיר האָבן? מיר האָבן די זעלבע זאַך ווי פריער, ינישאַלייז סדל, מאַכן אַ פֿענצטער, שאַפֿן אַ רענדערער, ​​מאַסע די בילד אין זיקאָרן, מאַכן די געוועב. ווידער, מיר רע געגאנגען צו האָבן דעם דעסט גראָדעק, מיר רע געגאנגען צו וואָג די בילד דורך פיר, מאַכן עס אַ ביסל קלענערער. איצט, מיר זענען געגאנגען צו אָנהייבן די ספּרייט אין צענטער פון דעם עקראַן. אבער דאָס מאָל, מיר רע געגאנגען צו שטעלן די ערשט רענטגענ און י וועלאָסיטיעס צו נול, ווייַל די קלאַוויאַטור איז געגאנגען צו קאָנטראָלירן די. און דערצו, מיר רע געגאנגען צו האַלטן שפּור פון די וועריאַבאַלז אַרויף, אַראָפּ, לינקס, און רעכט. און אַז ס געגאנגען צו האַלטן שפּור פון צי מיר ווע געדריקט די קלאַוויאַטור קנעפּלעך וואָס שטימען צו אַרויף, אַראָפּ, לינקס, און רעכט. איצט, דאָס איז מין פון פאַנטאַזיע ווייַל מיר קענען נוצן ד, א, ד, די דאָ, אָדער די פאַקטיש פייַל שליסלען. מיר וועט זען וואָס אין נאָר אַ רגע. אַזוי מיר רע געגאנגען צו פּראָצעס די געשעעניש נאָר ווי איידער. מיר ציען די געשעעניש. אבער איצט מיר ניטאָ געגאנגען צו באַשטימען אויף די געשעעניש טיפּ. אויב עס ס סדל_קוויט, מיר רע געגאנגען צו שטעלן נאָענט געבעטן צו איינער, נאָר ווי איידער. אַז כאַנדאַלז די רענטגענ אין די ווינקל פון די פֿענצטער, אַזוי אַז אונדזער פֿענצטער אַקטשאַוואַלי קלאָוזיז. אַנדערש, אויב מיר באַקומען אַ סדל שליסל אַראָפּ געשעעניש, וואָס מיטל מיר געדריקט אַ שליסל, דעמאָלט וואָס מיר רע געגאנגען צו טאָן איז מיר רע געגאנגען צו באַשטימען אויף דעם זאַך דאָ, וואָס מעאַנס-- אַזוי עווענט.קיי מיטל מייַכל אונדזער געשעעניש פאַרבאַנד, גיין און באַקומען די שליסל געשעעניש סטרוקטור אין עס. אַזוי עס טורנס אויס אַז דעם פאַרבאַנד איז אַ שליסל געשעעניש ביניען. און דאַן גיין צו די שליסל געשעעניש ס ביניען זייַן פעלד גערופֿן קייסים און דעמאָלט סקאַנקאָדע. און ווידער, באשטימט לייענען די דאַקיומענטיישאַן וועגן דעם. קייוואָרד ינפּוץ גאַנץ טשיקאַווע. איר קענען באַקומען יבערקוקן קאָודז אָדער שליסל קאָודז. און עס ס אַ ביסל סאַטאַל, אָבער די דאַקיומענטיישאַן איז גאַנץ גוט. אַזוי אויב מיר זען די יבערקוקן קאָד פֿאַר אונדזער שליסל דריקן ווייל וו אָדער אַרויף, מיר רע געגאנגען צו שטעלן אַרויף גלייַך צו 1. און דעמאָלט מיר ברעכן אויס פון וואָס באַשטימען. אויב עס ס אַ אָדער לינקס, מיר שטעלן לינקס צו 1, און סעטעראַ, און סעטעראַ, פֿאַר אַראָפּ און רעכט. איצט, אויס אין דעם ויסווייניקסט באַשטימען, אויב מיר זען אַ שליסל אַרויף געשעעניש, אַז מיטל מיר ווע רעלעאַסעד אַ שליסל און מיר ניטאָ ניט מער דרינגלעך עס. אזוי איך בין געגאנגען צו זאָגן אַרויף יקוואַלז 0, לינקס יקוואַלז 0, אַראָפּ יקוואַלז 0, רעכט יקוואַלז 0, און סעטעראַ. און באַמערקן מיר האָבן אין יעדער פון די צוויי קאַסעס שטעלן רעכט ווייַטער צו יעדער אנדערער מיט קיין באַזונדער קאָד פֿאַר די ערשטער פאַל, וואָס מיטל אַז צי עס ס אַ ד אָדער אַ אַראָפּ רעכט דאָ, עס ס געגאנגען צו ויספירן דעם קאָד. אַזוי אַז ס שיין האַנטיק. עס פּריווענץ אונדז בעת צו טאָן מער באדינגונגען און Ifs און דאס ווי אַז. אַזוי מיר רע געגאנגען צו באַשטימען די גיכקייַט. מיר שטעלן די גיכקייַט צו 0. דעריבער אויב זיך איז געדריקט און ניט אַראָפּ, דעמאָלט מיר שטעלן די י גיכקייַט צו נעגאַטיוו גיכקייַט. געדענק נעגאַטיוו, ווייַל די נעגאַטיוו און ריכטונג איז אַרויף. און די positive און ריכטונג איז אַראָפּ. אויב אַראָפּ איז געדריקט און נישט זיך, דעמאָלט מיר רע געגאנגען צו שטעלן עס צו positive גיכקייַט, וואָס מיטל געגאנגען אַראָפּ דעם עקראַן. זעלביקער זאַך מיט לינקס און רעכט. און דעמאָלט מיר רע געגאנגען צו דערהייַנטיקן די שטעלעס נאָר ווי איידער. מיר רע געגאנגען צו טאָן צונויפשטויס דיטעקשאַן מיט גווול, אָבער מיר ניטאָ ניט געגאנגען צו באַשטעטיק די גיכקייַט, ווייַל די גיכקייַט איז נאָר קאַנטראָולד דורך די קלאַוויאַטור. אבער מיר זענען געגאנגען צו באַשטעטיק די שטעלעס צו האַלטן עס אין די פֿענצטער. און מיר רע געגאנגען צו שטעלן די שטעלעס אין דער סטרוקט און דעמאָלט טאָן אַלע די רענדערינג שטאָפּן פון פריער. אַזוי לאָזן ס זען וואָס עס טוט. אַזוי מאַכן סרקס-- זאל ס זען, דעם איז העללאָ6_קייבאָאַרד.ק. אָה, ניט. אַזוי מיר גאַט עטלעכע וואָרנינגז דאָ. און אַז ס נאָר זאָגן מיר האבן נישט טשעק פֿאַר יעדער איין מעגלעך מין פון געשעעניש. אַז ס גוט, ווייַל עס ס 236 פון זיי אָדער אַזוי. אַזוי איך בין געגאנגען צו איגנאָרירן די וואָרנינגז. עס ס נאָך קאָמפּילעד פייַן. אַזוי איך בין געגאנגען צו שפּילן די שפּיל. עס ס ניט מאָווינג. אבער איצט, ווען איך צעקוועטשן אויף מיין קלאַוויאַטור, איך קענען טאָן עטלעכע וואַסד באַוועגונג דאָ, איך נוצן מיין פייַל שליסלען ווי געזונט. און באַמערקן, אַפֿילו כאָטש איך בין דרינגלעך רעכט רעכט איצט, עס ס ניט געגאנגען אויס פון די פֿענצטער, ווייַל איך באַשטעטיק עס אויף יעדער ראַם. אַזוי אַז ס שיין ציכטיק. איר קענען ימאַדזשאַן מאָווינג אַרום מאַריאָ מיט עטלעכע פייַל שליסלען אָדער עפּעס ווי אַז. און יאָ, די רענטגענ טוט אַרבעט. אַזוי לעצט טעקע מיר רע געגאנגען צו קוקן אין, העללאָוו7_מאָוסע. דאס איז וועגן געטינג מויז ינפּוט. אַזוי אין דעם איין, מיר אַרייַנפיר די מאַט כעדער, ווייַל מיר רע געגאנגען צו האָבן אַ קליין ביסל פון מאַט דאָ. זעלביקער אַלט, זעלביקער אַלט שטאָפּן, דעסטיניישאַן, זעלביקער אַלט, געזען אַז איידער. נו, דאָס איז טשיקאַווע. אזוי מיר ניטאָ צוריק צו בלויז טשעק פֿאַר די סדל פאַרלאָזן געשעעניש. וואָס איז וואָס? אַזוי איר קענען באַקומען מויז ינפּוט פון געשעענישן. ווי ווען די מויז געטומלט, איר באַקומען אַ געשעעניש פֿאַר וואָס. ווען אַ מויז קנעפּל איז געדריקט, איר קענען באַקומען אַ געשעעניש פֿאַר וואָס. אבער עס ס אנדערן, אַ ביסל סימפּלער טאָמער, אַפּי פֿאַר געטינג מויז ינפּוט. און אַז ס נאָר סדל באַקומען מויז שטאַט. אזוי איך האָבן אַ ינט פֿאַר רענטגענ און י פֿאַר די לויפֿער פּאָזיציע. איך פאָרן עס צו סדל_געטמאָוסעסטאַטע, וואָס שטעלט די. און דעם איז שטעלע אין דער קאָואָרדאַנאַט סיסטעם פון די פֿענצטער. אַזוי אויב דער מאַסע איז אין די שפּיץ לינקס פון די פֿענצטער, וואָס וואָלט 0, 0. איצט, וואָס איך בין געגאנגען צו טאָן איז איך בין געגאנגען צו טאָן אַ קליין ביסל פון וועקטאָר מאַט. איך געוועט איר געדאַנק איר וואָלט ניט זען אַז אין קס50, אָבער דאָ עס איז. איך בין געגאנגען צו טאָן עטלעכע וועקטאָר מאַט צו באַקומען די וועקטאָר פון די בילד צו די לויפֿער. און אַזוי וואָס טאָן איך האָבן דעם כיסער דאָ? נו, אויב איך נאָר געניצט דעסט .-- אַזוי איך דאַרפֿן צו איבערזעצן די מויז רענטגענ און י דורך האַלב די ברייט און די הייך פון די בילד, ווייַל איך ווילן דעם צענטער פון די בילד צו זייַן געגאנגען צו די מויז, נישט די אָנהייב פון דעם בילד. אַזוי אַז ס נאָר צו מאַכן זיכער איך בין גערעדט וועגן דעם צענטער פון דעם בילד דאָ. דעמאָלט מיר באַקומען דעלטע רענטגענ און י, וואָס איז די חילוק פון די ציל צו די פאַקטיש שטעלע פון ​​די בילד. און דעמאָלט מיר קענען באַקומען די דיסטאַנסע דאָ, וואָס איז געגאנגען צו זיין פּיטהאַגאָרעאַן טעאָרעם, קוואַדראַט וואָרצל פון רענטגענ מאל רענטגענ פּלוס און מאל י. איצט צו פאַרמייַדן דזשיטטער, און איך קענען ווייַזן איר וואָס דאָס טוט אויב איך טאָן ניט טאָן דעם, אויב דיסטאַנסע צווישן די לויפֿער און די בילד צענטער איז ווייניקער ווי פינף, איך בין נאָר נישט געגאנגען צו באַוועגן די בילד. אַנדערש, מיר שטעלן די גיכקייַט. און מיר שטעלן עס אַזוי אַז די גיכקייַט וועט שטענדיק זיין קעסיידערדיק. און די נעץ רעזולטאַט פון אַלע דעם מאַט איז אַז די בילד איז געגאנגען צו מאַך צו די לויפֿער. איצט, עס טורנס אויס אַז סדל_געטמאָוסעסטאַטע, אין דערצו צו באַשטעטיקן דעם רענטגענ און י טענות דאָ, עס אויך קערט אַ ינט אַז קאָראַספּאַנדז צו די שטאַט פון די מויז קנעפּלעך. אַזוי מיר קענען נישט לייענען אַז גלייַך, אָבער מיר קענען ניצן די מאַקראָס, אַ איין ביטוויסע אָפּעראַטאָר, נישט אַז סקערי, נאָר אַ ביטוויסע און. אַזוי מיר זאָגן קנעפּלעך, וואָס איז דער רעזולטאַט פון אונדזער סדל_געטמאָוסעסטאַטע, אויב אַז און ביטוויסע און, דעם מאַקראָו דאָ, סדל_בוטטאָנ_לעפט. אַזוי דעם איז געגאנגען צו נאָר האַלטן צו די ביטמאַפּ אַז קאָראַספּאַנדז צו לינקס מויז קנעפּל ווייל געדריקט. און אַזוי אויב די ביטוויסע און אַקערז און עס ס ניט נול, וואָס מיטל לינקס קנעפּל איז געדריקט, דעמאָלט מיר ניטאָ אַקטשאַוואַלי געגאנגען צו ניגייט ביידע די רענטגענ און די י וועלאָסיטיעס, וואָס וועט נאָר מאַכן די בילד ראַנאַוויי. אַפּדייט שטעלעס. קאַליזשאַנז דעטעקטיאָנס, געזען עס אַלע איידער, רענדערינג, אַלע רעכט. זאל ס מאַכן עס. אַזוי איר גאַט מאַכן סרקס = העללאָ7_מאָוסע.ק. גרויס. קיין ערראָרס. און שפּיל. אַזוי דאָ איך האָבן מיין מויז. און דער בילד איז טאַקע טשייסינג מיין מויז. איצט, אין אַ שפּיל איר מאַכן, אפֿשר דעם איז ווי אַ פייַנט טשייסינג דיין ביסל כאַראַקטער אָדער וועלכער. אבער דאָ מיר האָבן די בילד טשייסינג די מויז. און ווען איך גיט, די מויז סטאַרץ טשייסינג די בילד און דער בילד איז פליסנדיק אַוועק פון מויז. אַזוי אַז ס שיין קיל. און באַמערקן ווידער, עס ס נאָך צונויפשטויס דיטעקשאַן דאָ. אַזוי אַז איז די לעצט ביסל דעמאָ איך האָבן שטעלן אַרויף דאָ. און לאָזן ס נעמען אַ קוק אין איינער מער זאַך. אַזוי צוריק דאָ, איך דערמאנט דעם דזשיטטער. אַלע רעכט. אַזוי אויב דיסטאַנסע איז ווייניקער ווי פינף בילדצעלן, איך איז געווען באַשטעטיקן רענטגענ און י גיכקייַט צו נול. וואָס כאַפּאַנז אויב מיר באַקומען באַפרייַען פון וואָס? אזוי איך בין געגאנגען צו נאָר טאָן דעם. ביטע אַנטשולדיקן דעם כאָרענדאַס נוסח, אָבער מיר קאַמענטאַד אויס די ריכטיק קאָד. אזוי איך בין געגאנגען צו ראַטעווען אַז און טאָן די זעלביקער באַפֿעל פֿון איידער צו מאַכן עס. אַלע רעכט. און איצט וואָס כאַפּאַנז? גוט. מיר ניטאָ נאָך ווייַטערדיק די מויז נאָר ווי איידער, אָבער ווען מיר באַקומען צו די מויז, מיר 'ווע גאַט דעם גראָב דזשיטטער. וואָס ס געגאנגען אויף דאָרט? נו, אין אונדזער וועקטאָר מאַט, געדענקען מיר זענען גענומען די דיסטאַנסע צווישן די לויפֿער און דער צענטער פון די בילד? נו, ווי אַז אַפּראָוטשיז 0, מיר אָנהייבן געטינג ווי דעם סאָרט פון משוגע אָפּפירונג ווו די בילד איז סאָרט פון ווי אַסאַלייטינג אַרום די לויפֿער. און אַז ס קריייטינג דעם דזשיטטער. און אַז ס טאַקע מיעס. און איר מיסטאָמע טאָן ניט ווילן דיין גאַמעס טאן אַז, סייַדן עס ס עטלעכע סאָרט פון ספּעציעל ווירקונג. אַזוי אַז ס וואָס מיר האָבן נאָר דעם אַרבאַטרערי פֿאַרשניטן פון פינף בילדצעלן, ווו מיר זאָגן אויב עס ס ין פינף בילדצעלן, מיר ניטאָ גוט. מיר טאָן ניט דאַרפֿן צו באַוועגן די בילד ענימאָר. אַזוי אַז ס וואָס ס געגאנגען אויף דאָרט. אַזוי אַז ס שיין פיל עס. איר איצט וויסן ווי צו מאַכן אַ פֿענצטער, לאָדן אַ בילד, ציען אַ בילד צו די פֿענצטער, באַקומען קלאַוויאַטור ינפּוט, באַקומען מויז ינפּוט, עס ס אַ בינטל פון אנדערע ינפּוט אַז איר וואָלט ניט וויסן ווי צו באַקומען אויב איר נאָר פאַרברענגען אַ ביסל מינוט קוקן אין דאַקיומענטיישאַן. אַזוי איר אַקטשאַוואַלי האָבן גאַנץ אַ ביסל מכשירים אין דיין באַזייַטיקונג איצט צו שרייַבן אַ גאַנץ-פלעדגעד שפּיל. איצט, יעדער שפּיל דאַרף עטלעכע אַודיאָ, אָבער די אַודיאָ דאַקיומענטיישאַן איז אויך שיין גוט. און איך בין גרייט צו געוועט אַז אויב איר פֿאַרשטיין אַלע פון ​​די זאכן מיר גערעדט וועגן הייַנט מיט די בילדער, און סורפאַסעס, די פֿענצטער, און אַלץ, דעמאָלט אויסרעכענען אויס די אַודיאָ אַפּי איז ניט געגאנגען צו זיין אַז שלעכט. אַזוי איך קוק פאָרויס צו געזען וואָס איר מאַכן מיט סדל.