Angles Drawing Game with Radians (Interactive Randomized Practice)

Angles Drawing Game with Radians (Interactive Randomized Practice)
Loading the math board and drawing, please wait…
2024-04-09 23:30
This GeoGebra app presents an interactive game where random target angles are generated and students draw the corresponding angles using radians as accurately as possible; the app then checks correctness and provides feedback with timing and scoring. It focuses on the geometric representation of angles (rays/endpoint points, angle marks) and the key concept of measuring and constructing angles in radian mode. The construction combines Geometry and logic: Shuffle creates randomAngles and randomAngle; Semicircle and Circle (with Segment/Sector) define the angle workspace and visual reference; Point/Element/Angle build movable endpoints (e.g., AngEndpoint) and compute displayed angles (α, β) for user input; Vector/Translate/Dilate help position and express geometric elements; If, Text, CountIf/Last/Sequence manage answer checking, counting, and sequencing; timer plus buttons (btnCheck, btnResetApp) support gameplay flow. Suitable for grades 9–12 and for classroom or independent practice on radian-based angle construction and measurement.

GeoGebra Commands & Parameters

  1. Shuffle({1 / 2, 1 / 3, 2 / 3, 1 / 4, 3 / 4, 1 / 6, 5 / 6, 1, 1 / 12, 5 / 12, 7 / 12, 1 / 10, 3 / 10, 9 / 10}) → randomAngles, {0.8333333333333334, 0.08333333333333333, 0.3333333333333333, 0.4166666666666667, 0.5833333333333334, 0.25, 0.1, 0.75, 0.6666666666666666, 0.5, 1, 0.9, 0.3, 0.16666666666666666}
  2. Semicircle((-4, 0), (4, 0)) → c
  3. Point(c) → MovablePoint
  4. Angle(AngEndpoint, CentAng, MovablePoint) → α
  5. Element(randomAngles, Mod[questionCount, Length[randomAngles]] + 1) → randomAngle
  6. Corner(5) → AppSize
  7. Circle(CentAng, 3.5) → d
  8. Circle(CentAng, 4.5) → e
  9. Segment(CentAng, AnimP) → animSeg
  10. Angle(AngEndpoint, CentAng, AnimP) → β
  11. Sector(e, Max[angRad - Rad5, 0], Min[angRad + Rad5, pi]) → f
  12. Translate((0, 0), Vector[If[β ≤ 30°, Vector[(0.5 * (cos((2 * angRad)), sin((2 * angRad))))], Vector[(1.1 * (cos(angRad / 3), sin(angRad / 3)))]]]) → PosLabelCorrectA
  13. Translate((0, 0), Vector[If[α ≤ 30°, Vector[(2 * (cos((3 * α / 2)), sin((3 * α / 2))))], Vector[(2 * (cos(α / 2), sin(α / 2)))]]]) → PosLabelAlfa
  14. Dilate(MovablePoint, 1.3) → AnimP'
  15. If(perfect, 5, If[moreCorrect, 3, If[correct, 1, 0]]) → PointsToAdd
  16. Sector(e, angRad + (3 * Rad5), pi) → p
  17. Vector(AnimP', Target) → vec
  18. Sector(e, Max[angRad - (3 * Rad5), 0], Min[angRad - Rad5, pi]) → g
  19. Sector(e, Max[angRad + Rad5, 0], Min[angRad + (3 * Rad5), pi]) → h
  20. Sector(e, 0, angRad - (3 * Rad5)) → k
  21. Text(((("\textsf{+" * PointsToAdd) * If[perfect, " Perfect!", ""]) * "}"), AnimP' + (vec * wait^(2)), true, true, 0, 0) → textPlus1
  22. Last(histCorrect, Min[Length[histCorrect], 3]) → histCorrectLast3
  23. If(Length[histCorrect] ≟ 0, {}, Last[histCorrect, Min[5, Length[histCorrect]]]) → histCorrectLast5
  24. Sequence(Rotate[(4, 0), ii], ii, 0, 180°, If[hint2, 45°, 90°]) → pointsHint1
  25. Sequence(Rotate[(4.3, 0), ii], ii, 0, 180°, If[hint2, 45°, 90°]) → pointsHint2
  26. Zip(Dilate[AA, 1.15], AA, pointsHint1) → PointsHintLabels
  27. Sequence(Text[ii], ii, 0, 180, If[hint2, 45, 90]) → hintLabels
  28. Zip(Segment[AA, BB], AA, pointsHint1, BB, pointsHint2) → hintSegments
  29. Zip(Text[(tt * "°"), AA, true, true, 0, 1], AA, PointsHintLabels, tt, hintLabels) → hintlabelsPositioned
  30. CountIf(x ≟ false, histCorrectLast3) → falseIn3
  31. CountIf(x ≟ false, histCorrectLast5) → falseIn5
  32. Semicircle((-4.5, 0), (4.5, 0)) → graySemicircle
  33. Segment(CentAng, Dilate[AngEndpoint, 1.15]) → FixedSegment
  34. Segment(CentAng, Dilate[MovablePoint, 1.15]) → MovableSegment
  35. onboardingTextOffset(Corner[onboardingText_{1}, 1], Corner[onboardingText_{1}, 3], onboardingCase_{1}, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset_{1}
  36. circlePixels(MovablePoint, 7 + (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject
  37. Text((FractionText[β / pi] * "\pi"), PosLabelCorrectA, true, true, 0, 1) → labelCorrectAng
  38. Text((FractionText[α / pi] * "\pi"), PosLabelAlfa, true, true, 0, 1) → labelStudAng

AI Drawing Prompt Reference

Create an interactive angle drawing practice game. Draw a horizontal semicircle at the bottom as the baseline with a draggable point on it. Create two concentric circles centered on the screen with radii 3.5 and 4.5 as reference. Display the target angle range using differently colored sectors showing correct, too small, and too large ranges. Show current and target angles labeled as fractions of π (such as 1/2π, 1/3π). Include score display, feedback text, and a hint system showing degree markings from 0° to 180°. The overall scene presents a randomized practice for geometric angle measurement and construction using radians.
The prompt above was compiled from the original drawing commands and is for reference only.