Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nostalgia Meets Technology: Super Mario with Ty...
Search
Manfred Steyer
PRO
March 03, 2026
Programming
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nostalgia Meets Technology: Super Mario with TypeScript
Manfred Steyer
PRO
March 03, 2026
More Decks by Manfred Steyer
See All by Manfred Steyer
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
230
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
120
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
200
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
240
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
170
Agentic UI
manfredsteyer
PRO
0
240
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
300
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
250
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
180
Other Decks in Programming
See All in Programming
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
初めてのKubernetes 本番運用でハマった話
oku053
0
130
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
130
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
280
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
400
Android CLI
fornewid
0
180
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.9k
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
550
今さら聞けない .NET CLI
htkym
0
140
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
110
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.1k
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Code Review Best Practice
trishagee
74
20k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
The browser strikes back
jonoalderson
0
1.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
350
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
390
Why Our Code Smells
bkeepers
PRO
340
58k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Transcript
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Nostalgia Meets Technology
Super Mario with TypeScript ANGULARarchitects.io
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 2
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 3 1) Just
for Fun! 2) Learning/ Repeating Typical Patterns 3) Nice Programming Exercise Why?
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 4 1) Game
Loop 2) Tiles & Coordinates 3) Gravity 4) Side Scrolling & View Port 5) Collision Detection Agenda
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 5 About Me
(Remote) Angular Workshops and Consulting Google Developer Expert for Angular Blog, Books, Articles, and Talks about Angular Manfred Steyer, ANGULARarchitects.io
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 6 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 7 Loading Images
const response = await fetch('/hero.png'); const blob = await response.blob(); const heroTile = await createImageBitmap( blob, 0, // x 8, // y 16, // width 16 // height );
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 8 Game Loop
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 9 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 10 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 11 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); if (keyboard.right) { ctx.x += 1; } […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 12 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); if (keyboard.right) { ctx.x += 1; } ctx.context.clearRect(0, 0, 1000, 1000); ctx.context.drawImage(ctx.heroTile, ctx.x, ctx.y, 16, 16); […] }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 13 A Simple
Game Loop function tick(ctx: HeroContext, timeStamp: number): void { console.log('timeStamp', timeStamp); if (keyboard.right) { ctx.x += 1; } ctx.context.clearRect(0, 0, 1000, 1000); ctx.context.drawImage(ctx.heroTile, ctx.x, ctx.y, 16, 16); requestAnimationFrame((timeStamp) => tick(ctx, timeStamp)); }
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 14 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 15 Tiles &
Coordinates
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 16 (Cols, Rows)
vs. (x, y)
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 17 GameGrid gameGrid[0][0]
= { tile: skyTile }; gameGrid[1][0] = { tile: skyTile }; […]
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 18 Gravity
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 19
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 20 WHILE not
at ground Increase y by velocity Increase velocity Idea
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 21 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 22 Side Scrolling
& View Port
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 23 View Port
Scroll Offset Scroll Offset + View Port Width x renderX x - renderX
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 24 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 25 Collision Detection
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 26 Bounding Boxes
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 27 First, in
1D < <
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 28 First, in
1D < <
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 29 Bounding Boxes
a.left < b.right b.left < a.right a.top < b.bottom b.top < a.bottom a b
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 30 DEMO
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 31 Architecture, Concepts,
Implementation Modern Angular 400+ pages, PDF, EPUB Regular Free Updates! Q1/2026 Waiting List: angular-book.com
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 32 1) Game
Loop: Take Care of Time Delta 2) Tiles & Coordinates 3) Gravity: Increase/ Decrease Velocity 4) Side Scrolling & View Port: Change Offset i/o Hero Coordinates 5) Collision Detection: Bounding Boxes 6) We had fun! Conclusion
•Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 33 [Social Media]
Manfred Steyer [web] ANGULARarchitects.io Manfred Steyer @ Manfred Steyer Slides, Examples, Book Remote Company Workshops and Consulting http://angulararchitects.io