LMU ☀️ CMSI 185
COMPUTER PROGRAMMING
HOMEWORK #5 Due: 2020-12-01

Objectives

In this assignment you will add two projects to your GitHub portfolio (one with 3-D graphics and one using an external API), demonstrate your knowledge of three-dimensional transforms on simple shapes, and practice with textures and lights using p5.js.

Instructions

Do the readings, watch the videos, write the essays, and program the applications below.

Submit, via Brightspace, the following:

Readings and Videos

Just read and/or watch the following. You do not have to take notes or write reports on them; however, don’t cheat yourself by skipping them. These independent learning units must be done individually, but please feel free to discuss these items with your friends and classmates. You are encouraged to share your thoughts on these materials on course community channels (Brightspace Forums, Slack, Discord), and to post related items your classmates might be interested in. We learn together. Some of these resources have links to other resources, which you may wish to follow as time allows.

Programming

  1. Write a small web app using the Poké API that displays a list of Pokémon names, each of which is clickable. Clicking on a Pokémon name fetches information about the Pokémon which you should display to the right of the list. The information must include an image of the Pokémon. Your app can look as simple as this:

    poke.png

  2. Starting with my 3-D UFO Lander starter code, add the following enhancements:
    • Trees! Place one tree in each of the four corners of the landing pad. Each tree can be as simple as a (green) cone placed on top of a (brown) cylinder.
    • Stars in the background. (For fun, can you make the starfield animate slowly, like the stars around Earth move?)
    • A 3-D moon hovering in the sky (make it a sphere and wrap a moon texture around it—you should be able to find moon textures on the web).
    • The UFO should spin as it descends (the rate of spin is up to you).
    • Make the UFO shiny (yep, time for specular reflection).
    • Make the UFO fancier (be creative here). For example, the top of the UFO can be much less squished, and maybe even a cylinder. You can even go crazy and put windows on it, with aliens inside!
    • More realistic gravity. The UFO should start by falling rapidly, but its descent should slow as it gets closer to the planet surface, and stop when it lands.
    • Call noLoop() after the UFO has landed.
    • OPTIONAL: The UFO should have “legs” for landing.
    • OPTIONAL: Rather than starting from the top of the screen, the UFO flies in from far away, then begins its descent.

Grading

You will be graded on the usual programming quality metrics: readability, naming, structure, formatting, not-repeating-yourself, etc. We will meet in person (or via video chat) to talk through your solution, so I can give you feedback in making your code better.