More results...

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
post
page
Python IDE Dashboard

Using CSS to organise text into columns

To improve the readability and design of your web pages you may want to organise your text into multiple columns.

See the Pen CSS Columns by 101 Computing (@101Computing) on CodePen.

Your Challenge


Change the above code to split the text in two columns instead of three.

Responsive Columns


A responsive design is a design that adapts to the size of the screen used to display the webpage.

For instance, on a wide screen, splitting your text in three columns maybe appropriate, but the columns may look “skinny” when the page is displayed on a smaller screen. (Tablet, Smart Phone…)

One technique used to adapt the look and feel is to create CSS code for different sizes of screen using the following code:

@media only screen and (max-width: 480px) {
    /* STYLES HERE for BROWSER WINDOWS with a max-width of 480px. This will work on desktops when the window is narrowed.  */
}

You can see what this code will do by resizing your browser window. The text should switch between two or three columns based on the width of your browser window. (For the purpose of this test, you will need to press the “Edit on CodePen” button to display this content on its own window and then be able to resize the window).

See the Pen CSS Columns – Responsive Design by 101 Computing (@101Computing) on CodePen.

Your Challenge


Change the above CSS code to add another section where the text will only use one column for screens/browser windows with a width of 650px or less.

Projectile Motion Formula

Projectile-MotionMost artillery games are based on the Projectile Motion Formula used to trace the trajectory of a projectile thrown in the air. Due to gravity, its trajectory will be a parabola which shape will vary based on the angle and initial velocity of the projectile.

Use the script below and see what happens when you change the angle. (e.g. use a value between 0 and 90 degrees) or the velocity.

This page helped us with defining the equation for the trajectory of the projectile:
https://en.wikipedia.org/wiki/Projectile_motion

Using the displacement formula we can calculate the position ((x,y) coordinates) of a projectile at any given time.
projectile-motion-formula-t
In these formulas:

  • projectile-motion-formula-x0y0represent the starting position. (e.g. position of the tank on the screen),
  • projectile-motion-formula-v0 represents the initial velocity, in other words the initial power/speed that was used to shoot/throw the projectile,
  • projectile-motion-formula-theta (theta) represents the angle of projection. (At what angle was the projectile thrown)
  • projectile-motion-formula-time represents the time in seconds since the object was thrown. (Starts at 0). The number of frames since the object has been thrown can be used as a frame based game display a frame every x milliseconds.)
  • projectile-motion-formula-gravity represents the gravity. (On planet Earth: g = 9.81)

Let’s apply these formula using a Python script using the processing library to create a frame based animation.

Angry Birds, Tanks, Worms, Sports/Ball based games (Basketball…) all use a similar algorithm and formula. Can you think of any other video games based on this formula?

Alternative Approach

An alternative approach to implement this projectile motion formula to a flying object/sprite/ball using a frame based animation is to recalculate the position and velocity vector of the sprite at frame n+1 based at on its position and velocity at frame n:
velocity-vector

To do so we will use the following formulas:
projectile-motion-formula-frame
In these formulas:

  • projectile-motion-formula-v0 represents the initial velocity, in other words the initial power/speed that was used to shoot/throw the projectile,
  • projectile-motion-formula-theta (theta) represents the angle of projection. (At what angle was the projectile thrown)
  • projectile-motion-formula-time represents the time in seconds since the object was thrown. (Starts at 0). The number of frames since the object has been thrown can be used as a frame based game display a frame every x milliseconds.)
  • projectile-motion-formula-delta represents the “delta”: the amount of time (milliseconds) between two frames
  • projectile-motion-formula-gravity represents the gravity. (On planet Earth: g = 9.81)

Python Code:

Tagged with:

Music Score using Python

Music-ScoreIn this challenge we are going to use Python to draw a music score by positioning notes on the staff.

Look at the following code:

Your challenge:


Tweak the code given above so that the user can enter several notes at the same time. For instance the user should be able to type “CABFFE”. The program should display all six notes on the staff.

By completing this challenge you will further improve your string manipulation techniques in Python.

Tagged with:

Goal Line Technology

Goal Line Technology

Goal Line TechnologyInspired by the football world cup we came up with our own Glowscript code to implement a visual demonstration goal line technology.

Rules of the challenge:

  • Use Python to display the goal line on the screen as well as the two goal posts.
  • Every time the program is executed it should draw the ball on a random position on the screen.
  • The program should decide if there is a goal or not. There is a goal if the ball has passed the goal line and is between the two goal posts.

Visual Demonstration using Glowscript


In this goal line technology demonstration, the ball follows the mouse pointer. It turns green if you score a goal or red if the ball is out.

Read more

You can do some research on the Internet to find out how the goal line technology really works. You will find out that there are different types of systems as explained on this page about goal line technologies.

Tagged with: ,

Python Turtle Clock

This challenge consists of using the Python turtle library and the datetime library to create a program that displays the current time as an anlogue clock.

To complete this challenge we need to do some angle calculations to understand what angles to use when displaying the small hand (hours) and the big hand (minutes).

clock

Let’s do some calculations…

 

90_degree_rotations
What angle should you use for the small hand when it is:

  • 3:00 AM
  • 6:00 AM
  • 7:00 AM
  • 3:00PM
  • 5:00PM

 

What angle should you use for the big hand when it is:

  • 3:30 AM
  • 3:45 AM
  • 3:05 AM

Task 1:

Customise your clock by adding graduations (see picture below) and complete the code to add a third hand for the seconds (between 0 and 60) using a green hand.

tutrle-clocks

Task 2:

In reality the calculation for the small hand’s angle is slightly more complex. For instance when it is 2.45PM the small hand should not be on 2 o’clock but somewhere between 2 and 3 o’clock.

This wikipedia page gives you the exact calculation that you should use to calculate the angle of the small hand.

Your task is to update the above Python code to take into consideration this new angle calculation.

ClockAngles

unlock-access

Solution...

The solution for this challenge is available to full members!
Find out how to become a member:
➤ Members' Area
Tagged with: , ,

Python Turtle Challenge

In this challenge we are going to use the turtle library to draw the following shape:
Python-Turtle-Shape-Complete

Step 1: Run the code below:

Step 2: Complete the code to draw the full shape. (You can complete the code in the Trinket widget above).

  Python-Turtle-ShapePython-Turtle-Shape-Complete

Hint?


To complete this challenge you need to consider the differences between each of the 4 quadrants:
xy-coordinates
unlock-access

Solution...

The solution for this challenge is available to full members!
Find out how to become a member:
➤ Members' Area
Tagged with: , ,

Google Self-Driving Car: Flowchart

Google Self-Driving car is controlled by computer algorithms.

In our previous post we looked at how to create a self-parking robot using Lego NXT and Enchanting software.

For this challenge all we will need is a pen and some paper, or if you prefer you can use https://www.draw.io/ to draw a flowchart online.

Initial Investigation

Firstly, read this article or watch the video clip about the Google Self Driving Car. This article will appear with a set of questions for you to think about how the Google car works.

Your Challenge

Let’s look at the crossroads with traffic lights scenario. Using https://www.draw.io/ create the flowchart or pseudocode for the computer algorithm of the Google Self-Driving car, knowing that the SatNav of the car is advising the car to turn right at this junction.

The following picture may help you get started. However you will most likely need extra blocks to cater for all possibilities.GoogleCarFlowchart

Robotics: Self-Parking Challenge

New cars are fully loaded with technology. Manufacturers are working on new systems to facilitate the driving experience. Self-parking systems will soon be available on most cars.

Let’s look at what the technology can do:

Your Challenge

Build and program a robot that can scan a parking bay to find an an empty space and park itself in this space.

Our recommendations:

To complete this robotics challenge we recommend the following technology:

  • Lego Mindstroms – NXT
  • Echanting Software

If you are familiar with the Scratch user interface, then you will love Enchanting as it provides a Scratch based user Interface for your Lego Mindstorms NXT robot.
Robotic-Parking-System-560
Find out more about Enchanting on: http://enchanting.robotclub.ab.ca/

Find out more about self-driving cars on our STEM Lab.

Tagged with:

Tic-Tac-Toe Challenge

Ready for a real JavaScript challenge?

Look at the HTML, CSS and JavaScript code below. It creates the user interface and user interaction for a game of Tic-Tac-Toe. However the code is incomplete.

Your job is to complete this code by completing these two challenges:

Challenge 1:

Update this code to display a message when one of the players has won or when the game ends on a draw.

Challenge 2:

Update this code for player 1 to play against the computer! To do so you can either get the computer to place its token on the grid randomly, but you may also get the computer to make a decision by comparing different positions to place its token.

Learning Objectives

By completing this challenge you will further develop your HTML, CSS and JavaScript skills and learn how to manipulate two-dimensional arrays in JavaScript using for loops and if statements.

See the Pen TicTacToe by 101 Computing (@101Computing) on CodePen.

Click on the “Edit On CodePen” icon above to edit/complete this code. To be able to save your work on CodePen you will need to register first.

Creating tabs in HTML + CSS + JS

tabsIn previous posts we looked at how JavaScript can interact with HTML using:

  • Event Handlers in HTML such as onClick, onFocus, onBlur…
  • the DOM (Document Object Model) to access HTML objects using: document.getElementById(“objectId”)

CSS is applied to HTML objects. Using JavaScript you can change the CSS attributes of all your HTML objects using:

  • document.getElementById(“objectID”).style

For instance:

  • document.getElementById(“myTextBox”).style.background=”#FF0000″;
  • document.getElementById(“myHeading”).style.padding=”25px”;
  • document.getElementById(“myDiv”).style.display=”none”;  //This will make the DIV tag invisible
  • document.getElementById(“myDiv”).style.display=”block”;  //This will make the DIV tag visible

Let’s combine all these techniques to create some tabs:

The HTML code is fairly straightforward: Each tab needs a DIV tag for the tab itself and a DIV tag for its content:

<div id="tab1" onClick="JavaScript:selectTab(1);">Tab 1</div>
<div id="tab2" onClick="JavaScript:selectTab(2);">Tab 2</div>
<div id="tab3" onClick="JavaScript:selectTab(3);">Tab 3</div>

<br/>

<div id="tab1Content">
  This is the content to display in the first tab.
</div>
<div id="tab2Content">
  Welcome to tab 2!
</div>
<div id="tab3Content">
  Tab 3 is probably the best of the three tabs.
</div>

Then CSS code can be used to customise the look and feel of the tabs (Background colours, borders, padding…)
But mainly CSS is used to only display the first tab’s content area and hide the other two. This is done using the display attribute in CSS:

#tab1Content {
 display: block; 
}

#tab2Content, #tab3Content {
 display: none; 
}

Finaly the JavaScript code is used to handle the onClick event triggered by the tabs.
It accesses the style attribute of each tab’s content area to eithe hide or display the content of the tab based on which tab has been clicked.

function selectTab(tabIndex) {
  //Hide All Tabs
  document.getElementById('tab1Content').style.display="none";
  document.getElementById('tab2Content').style.display="none";
  document.getElementById('tab3Content').style.display="none";
  
  //Show the Selected Tab
  document.getElementById('tab' + tabIndex + 'Content').style.display="block";  
}

Let’s see all this code in action:

See the Pen Tabs using HTML + CSS + JavaScript by 101 Computing (@101Computing) on CodePen.

Your Challenge


Tweak this code (click on the “edit on CodePen” logo) to add an extra tab (Tab 4) to this script.
You will need to tweak the HTML code first, then the CSS then the JavaScript.

Extension Task:


Change the background of your tabs using a gradient. To do so you can use this CSS gradient generator.

gradients