diff options
Diffstat (limited to 'manuals/chickadee/Getting-Started.html')
-rw-r--r-- | manuals/chickadee/Getting-Started.html | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/manuals/chickadee/Getting-Started.html b/manuals/chickadee/Getting-Started.html new file mode 100644 index 0000000..7508ebe --- /dev/null +++ b/manuals/chickadee/Getting-Started.html @@ -0,0 +1,177 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 2017-2021 David Thompson davet@gnu.org + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 +or any later version published by the Free Software Foundation; +with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +A copy of the license is included in the section entitled "GNU +Free Documentation License". + +A copy of the license is also available from the Free Software +Foundation Web site at http://www.gnu.org/licenses/fdl.html. + + +* Chickadee: (chickadee). Game programming toolkit for Guile. + +The document was typeset with +http://www.texinfo.org/ (GNU Texinfo). + --> +<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<title>Getting Started (The Chickadee Game Toolkit)</title> + +<meta name="description" content="Getting Started (The Chickadee Game Toolkit)"> +<meta name="keywords" content="Getting Started (The Chickadee Game Toolkit)"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<link href="index.html" rel="start" title="Top"> +<link href="Index.html" rel="index" title="Index"> +<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="index.html" rel="up" title="Top"> +<link href="Command-Line-Interface.html" rel="next" title="Command Line Interface"> +<link href="Requirements.html" rel="prev" title="Requirements"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.indentedblock {margin-right: 0em} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +kbd {font-style: oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +span.nolinebreak {white-space: nowrap} +span.roman {font-family: initial; font-weight: normal} +span.sansserif {font-family: sans-serif; font-weight: normal} +ul.no-bullet {list-style: none} +@media (min-width: 1140px) { + body { + margin-left: 14rem; + margin-right: 4rem; + max-width: 52rem; + } +} + +@media (min-width: 800px) and (max-width: 1140px) { + body { + margin-left: 6rem; + margin-right: 4rem; + max-width: 52rem; + } +} + +@media (max-width: 800px) { + body { + margin: 1rem; + } +} + +--> +</style> +<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css"> + + +</head> + +<body lang="en"> +<span id="Getting-Started"></span><div class="header"> +<p> +Next: <a href="Command-Line-Interface.html" accesskey="n" rel="next">Command Line Interface</a>, Previous: <a href="Installation.html" accesskey="p" rel="prev">Installation</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> +</div> +<hr> +<span id="Getting-Started-1"></span><h2 class="chapter">2 Getting Started</h2> + +<p>One of the simplest programs we can make with Chickadee is rendering +the text “Hello, world” on screen. Here’s what that looks like: +</p> +<div class="example"> +<pre class="example">(define (draw alpha) + (draw-text "Hello, world!" (vec2 64.0 240.0))) +</pre></div> + +<p>The <code>draw</code> procedure is called frequently to draw the game scene. +For the sake of simplicity, we will ignore the <code>alpha</code> variable +in this tutorial. +</p> +<p>To run this program, we’ll use the <code>chickadee play</code> command: +</p> +<div class="example"> +<pre class="example">chickadee play hello.scm +</pre></div> + +<p>This is a good start, but it’s boring. Let’s make the text move! +</p> +<div class="example"> +<pre class="example">(define position (vec2 0.0 240.0)) + +(define (draw alpha) + (draw-text "Hello, world!" position)) + +(define (update dt) + (set-vec2-x! position (+ (vec2-x position) (* 100.0 dt)))) +</pre></div> + +<p>The <code>vec2</code> type is used to store 2D coordinates +(see <a href="Vectors.html">Vectors</a>.) A variable named <code>position</code> contains the +position where the text should be rendered. A new hook called +<code>update</code> has been added to handle the animation. This hook is +called frequently to update the state of the game. The variable +<code>dt</code> (short for “delta-time”) contains the amount of time that +has passed since the last update, in seconds. Putting it all +together, this update procedure is incrementing the x coordinate of +the position by 100 pixels per second. +</p> +<p>This is neat, but after a few seconds the text moves off the screen +completely, never to be seen again. It would be better if the text +bounced back and forth against the sides of the window. +</p> +<div class="example"> +<pre class="example">(define position (vec2 0.0 240.0)) + +(define (draw alpha) + (draw-text "Hello, world!" position)) + +(define (update dt) + (update-agenda dt)) + +(define (update-x x) + (set-vec2-x! position x)) + +(let ((start 0.0) + (end 536.0) + (duration 4.0)) + (script + (while #t + (tween duration start end update-x) + (tween duration end start update-x)))) +</pre></div> + +<p>This final example uses Chickadee’s scripting features +(see <a href="Scripting.html">Scripting</a>) to bounce the text between the edges of the window +indefinitely using the handy <code>tween</code> procedure. The only thing +the <code>update</code> procedure needs to do now is advance the clock of +the “agenda” (the thing that runs scripts.) The script takes care +of the rest. +</p> +<p>This quick tutorial has hopefully given you a taste of what you can do +with Chickadee. The rest of this manual gets into all of the details +that were glossed over, and much more. Try rendering a sprite, +playing a sound effect, or handling keyboard input. But most +importantly: Have fun! +</p> +<hr> +<div class="header"> +<p> +Next: <a href="Command-Line-Interface.html" accesskey="n" rel="next">Command Line Interface</a>, Previous: <a href="Installation.html" accesskey="p" rel="prev">Installation</a>, Up: <a href="index.html" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> +</div> + + + +</body> +</html> |