{"id":8707,"date":"2020-02-17T01:51:28","date_gmt":"2020-02-17T00:51:28","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=8707"},"modified":"2020-02-17T01:51:28","modified_gmt":"2020-02-17T00:51:28","slug":"decouvrir-le-langage-basic-par-le-jeu-video","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=8707","title":{"rendered":"D\u00e9couvrir le langage Basic par le jeu vid\u00e9o"},"content":{"rendered":"<p style=\"text-align: justify;\">Le <a href=\"https:\/\/www.auditsi.eu\/?page_id=2331\">langage Basic<\/a> est d\u2019un apprentissage ais\u00e9 ce qui en fait une porte d\u2019entr\u00e9e \u00e0 l\u2019informaticien en herbe d\u00e9sireux de s\u2019initier \u00e0 la programmation.<\/p>\n<p style=\"text-align: justify;\">Il existe plusieurs environnements de d\u00e9veloppement Basic, comme <a href=\"https:\/\/www.auditsi.eu\/?p=1628\">Free Basic<\/a> ou <a href=\"https:\/\/www.auditsi.eu\/?p=6552\">Small BASIC<\/a> (Microsoft), tous deux disponibles en libre t\u00e9l\u00e9chargement.<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?attachment_id=8708\" rel=\"attachment wp-att-8708\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8708\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2020\/02\/DONKEY-KONG-SMALL-BASIC.png\" alt=\"DONKEY KONG in the Small Basic\" width=\"600\" height=\"457\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2020\/02\/DONKEY-KONG-SMALL-BASIC.png 600w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2020\/02\/DONKEY-KONG-SMALL-BASIC-300x229.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Des exemples de codes sources s&#8217;inspirant de <a href=\"https:\/\/www.auditsi.eu\/?page_id=3245\">programmes de jeu embl\u00e9matiques des ann\u00e9es 80<\/a> \u00e9crits en Small Basic sont librement t\u00e9l\u00e9chargeables sur le <a href=\"http:\/\/www.nonkit.com\/en\/smallbasic\/\" target=\"_blank\" rel=\"noopener noreferrer\">site www.nonkit.com<\/a> : Donkey Kong, Snake, jeu de GO, Tic Tac Toe&#8230; L&#8217;analyse de ces listings est une source pr\u00e9cieuse facilitant l&#8217;apprentissage de la programmation.<\/p>\n<p style=\"text-align: justify;\">Exemple avec DONKEY KONG :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">' DONKEY KONG in the Small Basic World 0.91\r\n' Small Basic version written by Nonki Takahashi.\r\n'\r\n' History:\r\n' 0.91 2014-05-18 Added workaround for Silverlight. (FGM769-8)\r\n' 0.8 2014-03-24 Added ladders. (FGM769-6)\r\n' 0.7 2014-03-24 Changed music. (FGM769-5)\r\n' 0.6 2014-03-24 Added music and ending. (FGM769-4)\r\n' 0.5b 2014-03-14 Added motion of Mario. (FGM769-3)\r\n' 0.4a 2014-03-13 Added Donkey Kong. (FGM769-2)\r\n' 2014-03-13 13:40:50 Donkey Kong generated by Shapes 1.6b.\r\n' 0.3a 2014-03-12 Barrels demo with friction. (FGM769-1)\r\n' 0.2a 2014-03-10 Barrel demo without friction. (FGM769-0)\r\n' 0.1a 2014-03-08 Created only for graphics. (FGM769)\r\n'\r\nGraphicsWindow.Title = \"DONKEY KONG in the Small Basic World 0.91\"\r\nMAXBARREL = 8\r\nInit()\r\nOpening()\r\ng = 9.8     ' [m\/s^2]\r\ndt = 1 \/ 24 ' [s]\r\npxpm = 50   ' [pixel\/m]\r\npslope[1] = \"x1=200;y1=70;x2=400;y2=70;height=16;pitch=10;color=Maroon;\"\r\npslope[2] = \"x1=0;y1=130;x2=540;y2=150;height=16;pitch=10;color=Maroon;\"\r\npslope[3] = \"x1=60;y1=240;x2=600;y2=220;height=16;pitch=10;color=Maroon;\"\r\npslope[4] = \"x1=0;y1=310;x2=540;y2=330;height=16;pitch=10;color=Maroon;\"\r\npslope[5] = \"x1=300;y1=412;x2=600;y2=400;height=16;pitch=10;color=Maroon;\"\r\npslope[6] = \"x1=0;y1=412;x2=300;y2=412;height=16;pitch=10;color=Maroon;\"\r\nns = Array.GetItemCount(pslope)\r\nFor i = 1 To ns\r\n  param = pslope[i]\r\n  Slope_Add()\r\nEndFor\r\npladder[1] = \"x=360;y=86;width=20;height=56;pitch=8;color=DarkCyan;\"\r\npladder[2] = \"x=500;y=166;width=20;height=56;pitch=8;color=DarkCyan;\"\r\npladder[3] = \"x=80;y=256;width=20;height=56;pitch=8;color=DarkCyan;\"\r\npladder[4] = \"x=500;y=346;width=20;height=56;pitch=8;color=DarkCyan;\"\r\nnl = Array.GetItemCount(pladder)\r\nFor i = 1 To nl\r\n  param = pladder[i]\r\n  Ladder_Add()\r\nEndFor\r\nop = 100\r\nFor i = 1 To 10\r\n  hx = hx + 2\r\n  op = op - 10\r\n  Shapes.Move(help, hx, hy)\r\n  Shapes.SetOpacity(help, op)\r\n  Program.Delay(200)\r\nEndFor\r\nparam = \"x=10;y=40;m=5000;e=0.56;mu=1;\"\r\nBarrel_Add()\r\nlastms = Clock.ElapsedMilliseconds\r\ntimeout = \"False\"\r\nTimer.Interval = dt * 1000\r\nTimer.Tick = OnTick\r\nSound.PlayMusic(\"O6C4D8F8R8D8C8D8O5B-8O6C16D16E-16F16G16A16B-2\")\r\nGraphicsWindow.KeyDown = OnKeyDown\r\ninGame = \"True\"\r\ngoal = \"False\"\r\nWhile inGame\r\n  If timeout Then\r\n    ms = Clock.ElapsedMilliseconds\r\n    If 5000 &lt; ms - lastms Then\r\n      param = \"x=10;y=40;m=5000;e=0.56;mu=1;\"\r\n      Barrel_Add()\r\n      lastms = ms\r\n      If mario[\"ob\"] Then\r\n        Mario_Add()\r\n      EndIf\r\n    EndIf\r\n    Barrel_Motion()\r\n    Mario_Motion()\r\n    timeout = \"False\"\r\n  Else\r\n    Program.Delay(dt * 1000)\r\n  EndIf\r\n  If goal Then\r\n    Ending()\r\n  EndIf\r\nEndWhile\r\nClosing()\r\nSub Ending\r\n  Shapes.ShowShape(heart)\r\n  Sound.PlayMusic(\"O6R4D4D-8D8R8G8R4G4F8D8R4C4C4F8D-8D8R8O5B-2\")\r\n  inGame = \"False\"\r\n  Program.Delay(3000)\r\nEndSub\r\nSub Closing\r\n  GraphicsWindow.Clear()\r\n  fs = 40\r\n  GraphicsWindow.FontSize = fs\r\n  GraphicsWindow.BrushColor = \"White\"\r\n  tw = 267\r\n  x = Math.Floor((gw - tw) \/ 2)\r\n  y = Math.Floor((gh - fs) \/ 2)\r\n  GraphicsWindow.DrawText(x, y, \"GAME OVER\")\r\nEndSub\r\nSub Init\r\n  gw = 598\r\n  gh = 428\r\n  GraphicsWindow.Width = gw\r\n  GraphicsWindow.Height = gh\r\n  GraphicsWindow.BackgroundColor = \"Black\"\r\n  Not = \"True=False;False=True;\"\r\nEndSub\r\nSub OnKeyDown\r\n  key = GraphicsWindow.LastKey\r\n  If mario[\"landing\"] Then\r\n    If key = \"Left\" Then\r\n      mario[\"vx\"] = mario[\"vx\"] - 100\r\n      mario[\"vy\"] = mario[\"vy\"] - 100\r\n    ElseIf key = \"Right\" Then\r\n      mario[\"vx\"] = mario[\"vx\"] + 100\r\n      mario[\"vy\"] = mario[\"vy\"] - 100\r\n    ElseIf key = \"Up\" Then\r\n      mario[\"vy\"] = mario[\"vy\"] - 160\r\n    EndIf\r\n  EndIf\r\nEndSub\r\nSub OnTick\r\n  timeout = \"True\"\r\nEndSub\r\nSub Opening\r\n  ' initialize shapes\r\n  SB_Workaround()\r\n  GraphicsWindow.BrushColor = \"White\"\r\n  GraphicsWindow.FontName = \"Arial Black\"\r\n  GraphicsWindow.FontSize = 40\r\n  title = Shapes.AddText(\"DONKEY KONG\")\r\n  tw = 336\r\n  x = (gw - tw) \/ 2\r\n  Shapes.Move(title, x, 20)\r\n  GraphicsWindow.FontSize = 20\r\n  subtitle = Shapes.AddText(\"in the Small Basic World\")\r\n  tw = 267\r\n  x = (gw - tw) \/ 2\r\n  Shapes.Move(subtitle, x, 80)\r\n  Shapes_Init()\r\n  ' add shapes\r\n  scale = 1\r\n  angle = 0\r\n  iMin = 1\r\n  iMax = 47\r\n  Shapes_Add()\r\n  Sound.PlayMusic(\"O3B2O4R4C#4D2O3B2O4F#16F16F#16F16F#16F16F#16F16F#16F16F#16F16F#16F16F#16F16F#1\")\r\n  Shapes.Remove(title)\r\n  Shapes.Remove(subtitle)\r\n  Shapes_Remove()\r\n  url = \"http:\/\/www.nonkit.com\/smallbasic.files\/\"\r\n  peach = Shapes.AddImage(url + \"Peach96.png\")\r\n  If silverlight Then\r\n    Program.Delay(msWait)\r\n  EndIf\r\n  Shapes.Move(peach, 180, -4)\r\n  Shapes.Zoom(peach, 0.6, 0.6)\r\n  GraphicsWindow.BrushColor = \"White\"\r\n  GraphicsWindow.FontSize = 12\r\n  help = Shapes.AddText(\"HELP!\")\r\n  hx = 260\r\n  hy = 20\r\n  Shapes.Move(help, hx, hy)\r\n  ' add shapes\r\n  scale = 0.3\r\n  angle = 0\r\n  iMin = 1\r\n  iMax = 47\r\n  Shapes_Add()\r\n  x = 20\r\n  y = 48\r\n  Shapes_Move()\r\n  GraphicsWindow.PenWidth = 2\r\n  Mario_Add()\r\n  GraphicsWindow.FontSize = 50\r\n  GraphicsWindow.BrushColor = \"Magenta\"\r\n  heart = Shapes.AddText(\"&#x2665;\")\r\n  Shapes.Move(heart, 260, 0)\r\n  Shapes.HideShape(heart)\r\nEndSub\r\nSub Barrel_Add\r\n  ' param[\"x\"] - left co-ordinate\r\n  ' param[\"y\"] - top co-ordinate\r\n  ' param[\"m\"] - mass of barrel [g]\r\n  ' param[\"e\"] - coefficient of resititution\r\n  ' param[\"mu\"] - cofficient of friction\r\n  n = barrel[\"num\"]\r\n  n = n + 1\r\n  If MAXBARREL &lt; n Then\r\n    Barrel_FindUsed()\r\n  Else\r\n    barrel[\"num\"] = n\r\n  EndIf\r\n  barrel[n][\"m\"] = param[\"m\"]\r\n  barrel[n][\"e\"] = param[\"e\"]\r\n  barrel[n][\"mu\"] = param[\"mu\"]\r\n  url = \"http:\/\/www.nonkit.com\/smallbasic.files\/Barrel32.png\"\r\n  x = param[\"x\"]\r\n  y = param[\"y\"]\r\n  If barrel[n][\"obj\"] = \"\" Then\r\n    barrel[n][\"obj\"] = Shapes.AddImage(url)\r\n    If silverlight Then\r\n      Program.Delay(msWait)\r\n    EndIf\r\n  EndIf\r\n  Shapes.SetOpacity(barrel[n][\"obj\"], 100)\r\n  barrel[n][\"x\"] = x\r\n  barrel[n][\"y\"] = y\r\n  Shapes.Move(barrel[n][\"obj\"], x, y)\r\n  barrel[n][\"vx\"] = 0\r\n  barrel[n][\"vy\"] = 0\r\n  barrel[n][\"vr\"] = 0 ' rotational velocity\r\n  barrel[n][\"r\"] = 0  ' rotation angle\r\nEndSub\r\nSub Barrel_FindUsed\r\n  ' return n - index of barrel used\r\n  For n = 1 To barrel[\"num\"]\r\n    If barrel[n][\"x\"] &lt; -32 Then\r\n      Goto bfu_found\r\n    EndIf\r\n  EndFor\r\n  bfu_found:\r\nEndSub\r\nSub Barrel_Motion\r\n  nb = barrel[\"num\"]\r\n  ns = slope[\"num\"]\r\n  ax = 0\r\n  ay = g * pxpm\r\n  For ib = 1 To nb\r\n    vx = barrel[ib][\"vx\"]\r\n    vy = barrel[ib][\"vy\"]\r\n    barrel[ib][\"vx\"] = vx + ax * dt\r\n    barrel[ib][\"vy\"] = vy + ay * dt\r\n    barrel[ib][\"x\"] = barrel[ib][\"x\"] + (vx + barrel[ib][\"vx\"]) * dt \/ 2\r\n    barrel[ib][\"y\"] = barrel[ib][\"y\"] + (vy + barrel[ib][\"vy\"]) * dt \/ 2\r\n    xo = barrel[ib][\"x\"] + 16\r\n    yo = barrel[ib][\"y\"] + 16\r\n    e = barrel[ib][\"e\"]\r\n    m = barrel[ib][\"m\"]\r\n    mu = barrel[ib][\"mu\"]\r\n    For is = 1 To ns\r\n      a = slope[is][\"a\"]\r\n      b = slope[is][\"b\"]\r\n      c = slope[is][\"c\"]\r\n      d = Math.Abs(a * xo + b * yo + c) \/ Math.SquareRoot(a * a + b * b)\r\n      If d &lt;= 16 And slope[is][\"x1\"] &lt;= xo And xo &lt;= slope[is][\"x2\"] Then\r\n        x = barrel[ib][\"vx\"]\r\n        y = barrel[ib][\"vy\"]\r\n        Math_CartesianToPolar()\r\n        ss = slope[is][\"ss\"]\r\n        a = ss * 2 - a\r\n        vx = r * Math.Cos(Math.GetRadians(a))\r\n        vy = r * Math.Sin(Math.GetRadians(a))\r\n        dv = Math.SquareRoot(Math.Power((vx - x), 2) + Math.Power((vy - y), 2))\r\n        a = g * Math.Sin(Math.GetRadians(ss)) * pxpm \/ 2\r\n        If barrel[ib][\"vr\"] * a &lt; 0 Then\r\n          barrel[ib][\"vr\"] = -0.3 * barrel[ib][\"vr\"]\r\n        EndIf\r\n        barrel[ib][\"vr\"] = barrel[ib][\"vr\"] + a * dt\r\n        dvx = barrel[ib][\"vr\"] * 16 * Math.Cos(Math.GetRadians(ss))\r\n        dvy = barrel[ib][\"vr\"] * 16 * Math.Sin(Math.GetRadians(ss))\r\n        barrel[ib][\"vx\"] = (vx - x) * e \/ 2 + (vx + x) \/ 2\r\n        barrel[ib][\"vy\"] = (vy - y) * e \/ 2 + (vy + y) \/ 2\r\n        barrel[ib][\"x\"] = barrel[ib][\"x\"] + (vx - x) * (16 - d) \/ dv * e * e\r\n        barrel[ib][\"y\"] = barrel[ib][\"y\"] + (vy - y) * (16 - d) \/ dv * e * e\r\n      EndIf\r\n    EndFor\r\n    barrel[ib][\"r\"] = barrel[ib][\"r\"] + barrel[ib][\"vr\"] * dt\r\n    Shapes.Rotate(barrel[ib][\"obj\"], barrel[ib][\"r\"] * 10)\r\n    l = barrel[ib][\"x\"]\r\n    If l &lt; 0 And barrel[ib][\"y\"] &lt; 290 Then\r\n      barrel[ib][\"x\"] = -l * e * e\r\n      barrel[ib][\"vx\"] = -barrel[ib][\"vx\"] * e\r\n    EndIf\r\n    r = barrel[ib][\"x\"] + 32\r\n    If gw &lt; r Then\r\n      barrel[ib][\"x\"] = barrel[ib][\"x\"] - 2 * (r - gw) * e * e\r\n      barrel[ib][\"vx\"] = -barrel[ib][\"vx\"] * e\r\n    EndIf\r\n    h = gh - (barrel[ib][\"y\"] + 32)\r\n    If h &lt; 0 Then\r\n      barrel[ib][\"y\"] = barrel[ib][\"y\"] + h * e * e\r\n      barrel[ib][\"vy\"] = -barrel[ib][\"vy\"] * e\r\n    EndIf\r\n    Shapes.Move(barrel[ib][\"obj\"], barrel[ib][\"x\"], barrel[ib][\"y\"])\r\n  EndFor\r\nEndSub\r\nSub Ladder_Add\r\n  ' param[\"x\"] - top-left x co-ordinate\r\n  ' param[\"y\"] - top-left y co-ordinate\r\n  ' param[\"width\"] - width of ladder\r\n  ' param[\"height\"] - height of ladder\r\n  ' param[\"pitch\"] - y pitch for steps\r\n  ' param[\"color\"] - color of slop\r\n  ' return slope\r\n  GraphicsWindow.PenColor = param[\"color\"]\r\n  x = param[\"x\"]\r\n  y = param[\"y\"]\r\n  width = param[\"width\"]\r\n  height = param[\"height\"]\r\n  pitch = param[\"pitch\"]\r\n  GraphicsWindow.DrawLine(x, y, x, y + height)\r\n  GraphicsWindow.DrawLine(x + width, y, x + width, y + height)\r\n  For ys = y + pitch \/ 2  To y + height - pitch \/ 2 Step pitch\r\n    GraphicsWindow.DrawLine(x, ys, x + width, ys)\r\n  EndFor\r\nEndSub\r\nSub Mario_Add\r\n  x = 10\r\n  y = gh - 20 - 48\r\n  If mario[\"obj1\"] = \"\" Then\r\n    mario[\"n\"] = 3\r\n    url = \"http:\/\/www.nonkit.com\/smallbasic.files\/\"\r\n    For i = 1 To mario[\"n\"]\r\n      life[i] = Shapes.AddImage(url + \"Mario48.png\")\r\n     If silverlight Then\r\n      Program.Delay(msWait)\r\n    EndIf\r\n     Shapes.Move(life[i], gw + (i - 5) * 24, 10)\r\n      Shapes.Zoom(life[i], 0.5, 0.5)\r\n    EndFor\r\n    mario[\"obj1\"] = Shapes.AddImage(url + \"Mario48.png\")\r\n    If silverlight Then\r\n      Program.Delay(msWait)\r\n    EndIf\r\n    Shapes.Move(mario[\"obj1\"], x, y)\r\n    mario[\"obj2\"] = Shapes.AddImage(url + \"Mario48L.png\")\r\n    mario[\"obj3\"] = Shapes.AddImage(url + \"MarioJump48.png\")\r\n    mario[\"obj4\"] = Shapes.AddImage(url + \"MarioJump48L.png\")\r\n    If silverlight Then\r\n      Program.Delay(msWait)\r\n    EndIf\r\n    For i = 1 To 4\r\n      Shapes.HideShape(mario[\"obj\" + i])\r\n    EndFor\r\n    Program.Delay(1000)\r\n    Shapes.ShowShape(mario[\"obj1\"])\r\n    Shapes.HideShape(life[mario[\"n\"]])\r\n    mario[\"n\"] = mario[\"n\"] - 1\r\n  ElseIf 0 &lt; mario[\"n\"] Then\r\n    Shapes.HideShape(life[mario[\"n\"]])\r\n    mario[\"n\"] = mario[\"n\"] - 1\r\n    Shapes.Move(mario[\"obj1\"], x, y)\r\n    Shapes.Rotate(mario[\"obj1\"], 0)\r\n    Shapes.ShowShape(mario[\"obj1\"])\r\n  Else\r\n    inGame = \"False\"\r\n  EndIf\r\n  mario[\"x\"] = x\r\n  mario[\"y\"] = y\r\n  mario[\"vx\"] = 1\r\n  mario[\"vy\"] = 0\r\n  mario[\"r\"] = 0\r\n  mario[\"vr\"] = 0\r\n  mario[\"lastobj\"] = 1\r\n  mario[\"hit\"] = \"False\"\r\n  mario[\"right\"] = \"True\"\r\n  mario[\"ob\"] = \"False\"\r\nEndSub\r\nSub Mario_Motion\r\n  ax = 0\r\n  ay = g * pxpm\r\n  vx = mario[\"vx\"]\r\n  vy = mario[\"vy\"]\r\n  mario[\"vx\"] = vx + ax * dt\r\n  mario[\"vy\"] = vy + ay * dt\r\n  xm = mario[\"x\"] + (vx + mario[\"vx\"]) * dt \/ 2 + 24\r\n  ym = mario[\"y\"] + (vy + mario[\"vy\"]) * dt \/ 2 + 24\r\n  mario[\"landing\"] = \"False\"\r\n  If Not[mario[\"hit\"]] Then\r\n    nb = barrel[\"num\"]\r\n    For ib = 1 To nb\r\n      xb = barrel[ib][\"x\"] + 16\r\n      yb = barrel[ib][\"y\"] + 16\r\n      d = Math.SquareRoot(Math.Power((xb - xm), 2) + Math.Power((yb - ym), 2))\r\n      If d &lt; 20 Then\r\n        mario[\"hit\"] = \"True\"\r\n        mario[\"vx\"] = 0\r\n        ym = ym - 24\r\n        mario[\"vr\"] = 720\r\n      EndIf\r\n    EndFor\r\n    ns = slope[\"num\"]\r\n    For is = 1 To ns\r\n      a = slope[is][\"a\"]\r\n      b = slope[is][\"b\"]\r\n      c = slope[is][\"c\"]\r\n      d = Math.Abs(a * xm + b * ym + c) \/ Math.SquareRoot(a * a + b * b)\r\n      If d &lt;= 24 And slope[is][\"x1\"] &lt;= xm And xm &lt;= slope[is][\"x2\"] Then\r\n        mario[\"landing\"] = \"True\"\r\n        mario[\"vx\"] = 0\r\n        mario[\"vy\"] = 0\r\n        ym = -(a * xm + c) \/ b - 22\r\n        Goto mm_break\r\n      EndIf\r\n    EndFor\r\n    mm_break:\r\n  EndIf\r\n  mario[\"x\"] = xm - 24\r\n  mario[\"y\"] = Math.Floor(ym - 24)\r\n  l = mario[\"x\"]\r\n  If mario[\"landing\"] And is = 1 Then\r\n    goal = \"True\"\r\n  EndIf\r\n  If l &lt; 0 Then\r\n    mario[\"x\"] = -l * e * e\r\n    mario[\"vx\"] = -mario[\"vx\"] * e\r\n  EndIf\r\n  r = mario[\"x\"] + 48\r\n  If gw &lt; r Then\r\n    mario[\"x\"] = mario[\"x\"] - 2 * (r - gw) * e * e\r\n    mario[\"vx\"] = -mario[\"vx\"] * e\r\n  EndIf\r\n  h = gh - (mario[\"y\"] + 48)\r\n  If mario[\"hit\"] Then\r\n    If h &lt; -48 Then\r\n      mario[\"ob\"] = \"True\"\r\n    EndIf\r\n  Else\r\n    If h &lt; 0 Then\r\n      mario[\"y\"] = mario[\"y\"] + h * e * e\r\n      mario[\"vy\"] = -mario[\"vy\"] * e\r\n    EndIf\r\n  EndIf\r\n  If mario[\"landing\"] Then\r\n    If 0 &lt; mario[\"vx\"] Then\r\n      im = 1\r\n    ElseIf mario[\"vx\"] &lt; 0 Then\r\n      im = 2\r\n    Else\r\n      im = Math.Remainder(im - 1, 2) + 1\r\n    EndIf\r\n  Else\r\n    If 0 &lt; mario[\"vx\"] Then\r\n      im = 3\r\n    ElseIf mario[\"vx\"] &lt; 0 Then\r\n      im = 4\r\n    Else\r\n      im = Math.Remainder(im - 1, 2) + 3\r\n    EndIf\r\n  EndIf\r\n  If mario[\"lastobj\"] &lt;&gt; im Then\r\n    Shapes.HideShape(mario[\"obj\" + mario[\"lastobj\"]])\r\n    Shapes.ShowShape(mario[\"obj\" + im])\r\n    mario[\"lastobj\"] = im\r\n  EndIf\r\n  mario[\"r\"] = mario[\"r\"] + mario[\"vr\"] * dt\r\n  Shapes.Rotate(mario[\"obj\" + im], mario[\"r\"])\r\n  Shapes.Move(mario[\"obj\" + im], mario[\"x\"], mario[\"y\"])\r\nEndSub\r\nSub Math_CartesianToPolar\r\n  ' Math | convert cartesian coodinate to polar coordinate\r\n  ' param x, y - cartesian coordinate\r\n  ' return r, a - polar coordinate\r\n  r = Math.SquareRoot(x * x + y * y)\r\n  If x = 0 And y &gt; 0 Then\r\n    a = 90 ' [degree]\r\n  ElseIf x = 0 And y &lt; 0 Then\r\n    a = -90\r\n  Else\r\n    a = Math.ArcTan(y \/ x) * 180 \/ Math.Pi\r\n  EndIf\r\n  If x &lt; 0 Then\r\n    a = a + 180\r\n  ElseIf x &gt; 0 And y &lt; 0 Then\r\n    a = a + 360\r\n  EndIf\r\nEndSub\r\nSub SB_RotateWorkaround\r\n  ' Small Basic | Rotate workaround for Silverlight\r\n  ' param x, y - original coordinate\r\n  ' param alpha - angle [radian]\r\n  ' returns x, y - workaround coordinate\r\n  If shape[i][\"func\"] = \"tri\" Then\r\n    x1 = -Math.Floor(shape[i][\"x3\"] \/ 2)\r\n    y1 = -Math.Floor(shape[i][\"y3\"] \/ 2)\r\n  ElseIf shape[i][\"func\"] = \"line\" Then\r\n    x1 = -Math.Floor(Math.Abs(shape[i][\"x1\"] - shape[i][\"x2\"]) \/ 2)\r\n    y1 = -Math.Floor(Math.Abs(shape[i][\"y1\"] - shape[i][\"y2\"]) \/ 2)\r\n  EndIf\r\n  ox = x - x1\r\n  oy = y - y1\r\n  x = x1 * Math.Cos(alpha) - y1 * Math.Sin(alpha) + ox\r\n  y = x1 * Math.Sin(alpha) + y1 * Math.Cos(alpha) + oy\r\nEndSub\r\nSub SB_Workaround\r\n  ' Small Basic | Workaround for Silverlight\r\n  ' returns silverlight - \"True\" if in remote\r\n  color = GraphicsWindow.GetPixel(0, 0)\r\n  If Text.GetLength(color) &gt; 7 Then\r\n    silverlight = \"True\"\r\n    msWait = 300\r\n  Else\r\n    silverlight = \"False\"\r\n  EndIf\r\nEndSub\r\nSub Shapes_Add\r\n  ' Shapes | add shapes as shapes data\r\n  ' param iMin, iMax - shape indices to add\r\n  ' param shape - array of shapes\r\n  ' param scale - 1 if same scale\r\n  ' return shWidth, shHeight - total size of shapes\r\n  ' return shAngle - current angle of shapes\r\n  Stack.PushValue(\"local\", i)\r\n  Stack.PushValue(\"local\", x)\r\n  Stack.PushValue(\"local\", y)\r\n  Shapes_CalcWidthAndHeight()\r\n  s = scale\r\n  For i = iMin To iMax\r\n    GraphicsWindow.PenWidth = shape[i][\"pw\"] * s\r\n    If shape[i][\"pw\"] &gt; 0 Then\r\n      GraphicsWindow.PenColor = shape[i][\"pc\"]\r\n    EndIf\r\n    If Text.IsSubText(\"rect|ell|tri|text\", shape[i][\"func\"]) Then\r\n      GraphicsWindow.BrushColor = shape[i][\"bc\"]\r\n    EndIf\r\n    If shape[i][\"func\"] = \"rect\" Then\r\n      shape[i][\"obj\"] = Shapes.AddRectangle(shape[i][\"width\"] * s, shape[i][\"height\"] * s)\r\n    ElseIf shape[i][\"func\"] = \"ell\" Then\r\n      shape[i][\"obj\"] = Shapes.AddEllipse(shape[i][\"width\"] * s, shape[i][\"height\"] * s)\r\n    ElseIf shape[i][\"func\"] = \"tri\" Then\r\n      shape[i][\"obj\"] = Shapes.AddTriangle(shape[i][\"x1\"] * s, shape[i][\"y1\"] * s, shape[i][\"x2\"] * s, shape[i][\"y2\"] * s, shape[i][\"x3\"] * s, shape[i][\"y3\"] * s)\r\n    ElseIf shape[i][\"func\"] = \"line\" Then\r\n      shape[i][\"obj\"] = Shapes.AddLine(shape[i][\"x1\"] * s, shape[i][\"y1\"] * s, shape[i][\"x2\"] * s, shape[i][\"y2\"] * s)\r\n    ElseIf shape[i][\"func\"] = \"text\" Then\r\n      If silverlight Then\r\n        fs = Math.Floor(shape[i][\"fs\"] * 0.9)\r\n      Else\r\n        fs = shape[i][\"fs\"]\r\n      EndIf\r\n      GraphicsWindow.FontSize = fs * s\r\n      GraphicsWindow.FontName = shape[i][\"fn\"]\r\n      shape[i][\"obj\"] = Shapes.AddText(shape[i][\"text\"])\r\n    EndIf\r\n    x = shape[i][\"x\"]\r\n    y = shape[i][\"y\"]\r\n    shape[i][\"rx\"] = x\r\n    shape[i][\"ry\"] = y\r\n    If silverlight And Text.IsSubText(\"tri|line\", shape[i][\"func\"]) Then\r\n      alpha = Math.GetRadians(shape[i][\"angle\"])\r\n      SB_RotateWorkaround()\r\n      shape[i][\"wx\"] = x\r\n      shape[i][\"wy\"] = y\r\n    EndIf\r\n    Shapes.Move(shape[i][\"obj\"], shX + x * s, shY + y * s)\r\n    If Text.IsSubText(\"rect|ell|tri|text\", shape[i][\"func\"]) And shape[i][\"angle\"] &lt;&gt; 0 Then\r\n      Shapes.Rotate(shape[i][\"obj\"], shape[i][\"angle\"])\r\n    EndIf\r\n  EndFor\r\n  shAngle = 0\r\n  y = Stack.PopValue(\"local\")\r\n  x = Stack.PopValue(\"local\")\r\n  i = Stack.PopValue(\"local\")\r\nEndSub\r\nSub Shapes_CalcRotatePos\r\n  ' Shapes | Calculate position for rotated shape\r\n  ' param[\"x\"], param[\"y\"] - position of a shape\r\n  ' param[\"width\"], param[\"height\"] - size of a shape\r\n  ' param [\"cx\"], param[\"cy\"] - center of rotation\r\n  ' param [\"angle\"] - rotate angle\r\n  ' return x, y - rotated position of a shape\r\n  _cx = param[\"x\"] + param[\"width\"] \/ 2\r\n  _cy = param[\"y\"] + param[\"height\"] \/ 2\r\n  x = _cx - param[\"cx\"]\r\n  y = _cy - param[\"cy\"]\r\n  Math_CartesianToPolar()\r\n  a = a + param[\"angle\"]\r\n  x = r * Math.Cos(a * Math.Pi \/ 180)\r\n  y = r * Math.Sin(a * Math.Pi \/ 180)\r\n  _cx = x + param[\"cx\"]\r\n  _cy = y + param[\"cy\"]\r\n  x = _cx - param[\"width\"] \/ 2\r\n  y = _cy - param[\"height\"] \/ 2\r\nEndSub\r\nSub Shapes_CalcWidthAndHeight\r\n  ' Shapes | Calculate total width and height of shapes\r\n  ' param iMin, iMax - shape indices to add\r\n  ' return shWidth, shHeight - total size of shapes\r\n  For i = iMin To iMax\r\n    If shape[i][\"func\"] = \"tri\" Or shape[i][\"func\"] = \"line\" Then\r\n      xmin = shape[i][\"x1\"]\r\n      xmax = shape[i][\"x1\"]\r\n      ymin = shape[i][\"y1\"]\r\n      ymax = shape[i][\"y1\"]\r\n      If shape[i][\"x2\"] &lt; xmin Then\r\n        xmin = shape[i][\"x2\"]\r\n      EndIf\r\n      If xmax &lt; shape[i][\"x2\"] Then\r\n        xmax = shape[i][\"x2\"]\r\n      EndIf\r\n      If shape[i][\"y2\"] &lt; ymin Then\r\n        ymin = shape[i][\"y2\"]\r\n      EndIf\r\n      If ymax &lt; shape[i][\"y2\"] Then\r\n        ymax = shape[i][\"y2\"]\r\n      EndIf\r\n      If shape[i][\"func\"] = \"tri\" Then\r\n        If shape[i][\"x3\"] &lt; xmin Then\r\n          xmin = shape[i][\"x3\"]\r\n        EndIf\r\n        If xmax &lt; shape[i][\"x3\"] Then\r\n          xmax = shape[i][\"x3\"]\r\n        EndIf\r\n        If shape[i][\"y3\"] &lt; ymin Then\r\n          ymin = shape[i][\"y3\"]\r\n        EndIf\r\n        If ymax &lt; shape[i][\"y3\"] Then\r\n          ymax = shape[i][\"y3\"]\r\n        EndIf\r\n      EndIf\r\n      shape[i][\"width\"] = xmax - xmin\r\n      shape[i][\"height\"] = ymax - ymin\r\n    EndIf\r\n    If i = 1 Then\r\n      shWidth = shape[i][\"x\"] + shape[i][\"width\"]\r\n      shHeight = shape[i][\"y\"] + shape[i][\"height\"]\r\n    Else\r\n      If shWidth &lt; shape[i][\"x\"] + shape[i][\"width\"] Then\r\n        shWidth = shape[i][\"x\"] + shape[i][\"width\"]\r\n      EndIf\r\n      If shHeight &lt; shape[i][\"y\"] + shape[i][\"height\"] Then\r\n        shHeight = shape[i][\"y\"] + shape[i][\"height\"]\r\n      EndIf\r\n    EndIf\r\n  EndFor\r\nEndSub\r\nSub Shapes_Init\r\n  ' Shapes | Initialize shapes data for Donkey Kong\r\n  ' return shX, shY - current position of shapes\r\n  ' return shape - array of shapes\r\n  shX = 150 ' x offset\r\n  shY = 120 ' y offset\r\n  shape = \"\"\r\n  shape[1] = \"func=ell;x=98;y=44;width=110;height=71;bc=#834216;pw=0;\"\r\n  shape[2] = \"func=ell;x=51;y=247;width=75;height=23;angle=348;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[3] = \"func=ell;x=197;y=250;width=74;height=22;angle=11;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[4] = \"func=ell;x=113;y=253;width=20;height=22;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[5] = \"func=ell;x=191;y=255;width=18;height=20;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[6] = \"func=ell;x=40;y=260;width=13;height=16;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[7] = \"func=ell;x=47;y=264;width=16;height=18;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[8] = \"func=ell;x=261;y=267;width=13;height=13;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[9] = \"func=ell;x=252;y=269;width=13;height=15;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[10] = \"func=ell;x=81;y=190;width=36;height=67;angle=332;bc=#834216;pw=0;\"\r\n  shape[11] = \"func=ell;x=200;y=188;width=35;height=67;angle=20;bc=#834216;pw=0;\"\r\n  shape[12] = \"func=ell;x=76;y=175;width=62;height=43;bc=#834216;pw=0;\"\r\n  shape[13] = \"func=ell;x=171;y=178;width=60;height=40;bc=#834216;pw=0;\"\r\n  shape[14] = \"func=ell;x=112;y=139;width=82;height=76;bc=#834216;pw=0;\"\r\n  shape[15] = \"func=ell;x=75;y=99;width=81;height=72;bc=#834216;pw=0;\"\r\n  shape[16] = \"func=ell;x=149;y=96;width=82;height=74;bc=#834216;pw=0;\"\r\n  shape[17] = \"func=ell;x=5;y=87;width=107;height=55;angle=340;bc=#834216;pw=0;\"\r\n  shape[18] = \"func=ell;x=195;y=82;width=109;height=59;angle=25;bc=#834216;pw=0;\"\r\n  shape[19] = \"func=ell;x=0;y=126;width=43;height=76;angle=341;bc=#834216;pw=0;\"\r\n  shape[20] = \"func=ell;x=263;y=126;width=45;height=72;angle=17;bc=#834216;pw=0;\"\r\n  shape[21] = \"func=ell;x=33;y=176;width=39;height=35;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[22] = \"func=ell;x=239;y=176;width=41;height=37;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[23] = \"func=tri;x=113;y=0;x1=37;y1=0;x2=0;y2=76;x3=75;y3=76;bc=#834216;pw=0;\"\r\n  shape[24] = \"func=tri;x=148;y=5;x1=15;y1=0;x2=0;y2=43;x3=31;y3=43;bc=#834216;pw=0;\"\r\n  shape[25] = \"func=ell;x=110;y=46;width=58;height=41;angle=33;bc=#FDBC90;pw=0;\"\r\n  shape[26] = \"func=ell;x=138;y=47;width=61;height=41;angle=318;bc=#FDBC90;pw=0;\"\r\n  shape[27] = \"func=tri;x=119;y=60;x1=33;y1=0;x2=0;y2=41;x3=67;y3=41;angle=180;bc=#000000;pc=#000000;pw=2;\"\r\n  shape[28] = \"func=ell;x=127;y=61;width=28;height=19;angle=349;bc=#FFFFFF;pc=#000000;pw=2;\"\r\n  shape[29] = \"func=ell;x=152;y=62;width=30;height=20;angle=16;bc=#FFFFFF;pc=#000000;pw=2;\"\r\n  shape[30] = \"func=ell;x=135;y=66;width=14;height=15;bc=#000000;pc=#000000;pw=2;\"\r\n  shape[31] = \"func=ell;x=158;y=67;width=14;height=15;bc=#000000;pc=#000000;pw=2;\"\r\n  shape[32] = \"func=ell;x=123;y=140;width=59;height=60;bc=#FCA76E;pc=#834216;pw=2;\"\r\n  shape[33] = \"func=ell;x=150;y=107;width=62;height=55;bc=#FCA76E;pw=0;\"\r\n  shape[34] = \"func=ell;x=94;y=107;width=64;height=53;bc=#FCA76E;pw=0;\"\r\n  shape[35] = \"func=ell;x=96;y=79;width=118;height=69;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[36] = \"func=ell;x=77;y=65;width=35;height=23;angle=38;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[37] = \"func=ell;x=194;y=63;width=36;height=23;angle=317;bc=#FDBC90;pc=#834216;pw=2;\"\r\n  shape[38] = \"func=ell;x=130;y=74;width=22;height=17;angle=15;bc=#FDBC90;pw=0;\"\r\n  shape[39] = \"func=ell;x=156;y=73;width=22;height=18;angle=348;bc=#FDBC90;pw=0;\"\r\n  shape[40] = \"func=tri;x=111;y=90;x1=10;y1=0;x2=0;y2=22;x3=20;y3=22;angle=298;bc=#FFFFFF;pc=#000000;pw=2;\"\r\n  shape[41] = \"func=tri;x=172;y=91;x1=11;y1=0;x2=0;y2=23;x3=22;y3=23;angle=62;bc=#FFFFFF;pc=#000000;pw=2;\"\r\n  shape[42] = \"func=rect;x=125;y=97;width=55;height=21;bc=#FFFFFF;pc=#000000;pw=2;\"\r\n  shape[43] = \"func=ell;x=135;y=78;width=15;height=9;angle=23;bc=#834216;pw=0;\"\r\n  shape[44] = \"func=ell;x=159;y=77;width=15;height=9;angle=339;bc=#834216;pw=0;\"\r\n  shape[45] = \"func=line;x=152;y=97;x1=0;y1=0;x2=0;y2=19;pc=#000000;pw=2;\"\r\n  shape[46] = \"func=line;x=137;y=98;x1=0;y1=0;x2=0;y2=19;pc=#000000;pw=2;\"\r\n  shape[47] = \"func=line;x=167;y=99;x1=0;y1=0;x2=0;y2=18;pc=#000000;pw=2;\"\r\nEndSub\r\nSub Shapes_Move\r\n  ' Shapes | Move shapes\r\n  ' param iMin, iMax - shape indices to add\r\n  ' param shape - array of shapes\r\n  ' param scale - to zoom\r\n  ' param x, y - position to move\r\n  ' return shX, shY - new position of shapes\r\n  Stack.PushValue(\"local\", i)\r\n  s = scale\r\n  shX = x\r\n  shY = y\r\n  For i = iMin To iMax\r\n    If silverlight And Text.IsSubText(\"tri|line\", shape[i][\"func\"]) Then\r\n      _x = shape[i][\"wx\"]\r\n      _y = shape[i][\"wy\"]\r\n    Else\r\n      _x = shape[i][\"rx\"]\r\n      _y = shape[i][\"ry\"]\r\n    EndIf\r\n    Shapes.Move(shape[i][\"obj\"], shX + _x * s, shY + _y * s)\r\n  EndFor\r\n  i = Stack.PopValue(\"local\")\r\nEndSub\r\nSub Shapes_Remove\r\n  ' Shapes | Remove shapes\r\n  ' param iMin, iMax - shapes indices to remove\r\n  ' param shape - array of shapes\r\n  Stack.PushValue(\"local\", i)\r\n  For i = iMin To iMax\r\n    Shapes.Remove(shape[i][\"obj\"])\r\n  EndFor\r\n  i = Stack.PopValue(\"local\")\r\nEndSub\r\nSub Shapes_Rotate\r\n  ' Shapes | Rotate shapes\r\n  ' param iMin, iMax - shapes indices to rotate\r\n  ' param shape - array of shapes\r\n  ' param scale - to zoom\r\n  ' param angle - to rotate\r\n  Stack.PushValue(\"local\", i)\r\n  Stack.PushValue(\"local\", x)\r\n  Stack.PushValue(\"local\", y)\r\n  s = scale\r\n  param[\"angle\"] = angle\r\n  param[\"cx\"] = shWidth \/ 2\r\n  param[\"cy\"] = shHeight \/ 2\r\n  For i = iMin To iMax\r\n    param[\"x\"] = shape[i][\"x\"]\r\n    param[\"y\"] = shape[i][\"y\"]\r\n    param[\"width\"] = shape[i][\"width\"]\r\n    param[\"height\"] = shape[i][\"height\"]\r\n    Shapes_CalcRotatePos()\r\n    shape[i][\"rx\"] = x\r\n    shape[i][\"ry\"] = y\r\n    If silverlight And Text.IsSubText(\"tri|line\", shape[i][\"func\"]) Then\r\n      alpha = Math.GetRadians(angle + shape[i][\"angle\"])\r\n      SB_RotateWorkAround()\r\n      shape[i][\"wx\"] = x\r\n      shape[i][\"wy\"] = y\r\n    EndIf\r\n    Shapes.Move(shape[i][\"obj\"], shX + x * s, shY + y * s)\r\n    Shapes.Rotate(shape[i][\"obj\"], angle + shape[i][\"angle\"])\r\n  EndFor\r\n  y = Stack.PopValue(\"local\")\r\n  x = Stack.PopValue(\"local\")\r\n  i = Stack.PopValue(\"local\")\r\nEndSub\r\nSub Slope_Add\r\n  ' param[\"x1\"] - top-left x co-ordinate\r\n  ' param[\"y1\"] - top-left y co-ordinate\r\n  ' param[\"x2\"] - top-right x co-ordinate\r\n  ' param[\"y2\"] - top-right y co-ordinate\r\n  ' param[\"height\"] - height of slope\r\n  ' param[\"pitch\"] - x pitch for diagonal brace\r\n  ' param[\"color\"] - color of slop\r\n  ' return slope\r\n  n = slope[\"num\"]\r\n  n = n + 1\r\n  slope[\"num\"] = n\r\n  GraphicsWindow.PenColor = param[\"color\"]\r\n  x1 = param[\"x1\"]\r\n  y1 = param[\"y1\"]\r\n  x2 = param[\"x2\"]\r\n  y2 = param[\"y2\"]\r\n  GraphicsWindow.DrawLine(x1, y1, x2, y2)\r\n  slope[n][\"x1\"] = x1\r\n  slope[n][\"y1\"] = y1\r\n  slope[n][\"x2\"] = x2\r\n  slope[n][\"y2\"] = y2\r\n  x = x2 - x1\r\n  y = y2 - y1\r\n  Math_CartesianToPolar()\r\n  slope[n][\"ss\"] = a\r\n  slope[n][\"a\"] = y\r\n  slope[n][\"b\"] = -x\r\n  slope[n][\"c\"] = -y * x1 + x * y1\r\n  x3 = x1\r\n  y3 = y1 + param[\"height\"]\r\n  x4 = x2\r\n  y4 = y2 + param[\"height\"]\r\n  GraphicsWindow.DrawLine(x3, y3, x4, y4)\r\n  slope[n][\"x3\"] = x3\r\n  slope[n][\"y3\"] = y3\r\n  slope[n][\"x4\"] = x4\r\n  slope[n][\"y4\"] = y4\r\n  pitch = param[\"pitch\"]\r\n  up = \"False\"\r\n  For x5 = x1 To x2 - pitch Step pitch\r\n    x6 = x5 + pitch\r\n    If up Then\r\n      y5 = y1 + (y2 - y1) * (x5 - x1) \/ (x2 - x1)\r\n      y6 = y3 + (y4 - y3) * (x6 - x3) \/ (x4 - x3)\r\n    Else\r\n      y5 = y3 + (y4 - y3) * (x5 - x3) \/ (x4 - x3)\r\n      y6 = y1 + (y2 - y1) * (x6 - x1) \/ (x2 - x1)\r\n    EndIf\r\n    GraphicsWindow.DrawLine(x5, y5, x6, y6)\r\n    up = Not[up]\r\n  EndFor\r\nEndSub<\/pre>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.microsoft.com\/fr-FR\/download\/details.aspx?id=46392\" target=\"_blank\" rel=\"noopener noreferrer\">Small Basic version 1.2<\/a> en t\u00e9l\u00e9chargement sur le site de Microsoft<\/p>\n<p style=\"text-align: justify;\">Pour aller plus loin : <a href=\"https:\/\/www.auditsi.eu\/?cat=1207\">s\u2019initier \u00e0 la programmation en Basic<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?cat=1569\">d\u00e9couvrir le langage VBA<\/a>&nbsp;\/ <a href=\"https:\/\/www.auditsi.eu\/?page_id=2377\">les langages de programmation<\/a> (histoire de l\u2019informatique)<\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"D%C3%A9couvrir%20le%20langage%20Basic%20par%20le%20jeu%20vid%C3%A9o\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Le langage Basic est d\u2019un apprentissage ais\u00e9 ce qui en fait une porte d\u2019entr\u00e9e \u00e0 l\u2019informaticien en herbe d\u00e9sireux de s\u2019initier \u00e0 la programmation. Il existe plusieurs environnements de d\u00e9veloppement Basic, comme Free Basic ou Small BASIC (Microsoft), tous deux disponibles en libre t\u00e9l\u00e9chargement. Des exemples de codes sources s&#8217;inspirant de programmes de jeu embl\u00e9matiques &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=8707\" class=\"more-link\">Continue reading &lsquo;D\u00e9couvrir le langage Basic par le jeu vid\u00e9o&rsquo; &raquo;<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"D%C3%A9couvrir%20le%20langage%20Basic%20par%20le%20jeu%20vid%C3%A9o\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[442,1207],"tags":[1647,2159,814,1727],"class_list":["post-8707","post","type-post","status-publish","format-standard","hentry","category-basic","category-initiation-au-basic","tag-basic","tag-donkey-kong","tag-initiation","tag-small-basic"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/8707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8707"}],"version-history":[{"count":2,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/8707\/revisions"}],"predecessor-version":[{"id":8710,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/8707\/revisions\/8710"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}