Skip to main content

Overview

The Student Interests game tests your knowledge of classmates’ personalities and preferences. You see a student’s name and must match them to the correct description from four options.
URL Pattern: /minijuegos/adivina-gustos/<group_id>/Minimum Students: 4 with profile data

How to Play

1

See the Target Student

The game displays a classmate’s name and profile picture.
2

Review Four Descriptions

Four personality descriptions appear, each combining:
  • Age
  • Favorite artist
  • Personal motivation
3

Select the Correct Description

Click the description that matches the target student’s profile.
4

Get Instant Feedback

AJAX provides immediate results showing if you chose correctly.
5

Continue Learning

Each round helps you learn more about your classmates’ interests.

Description Format

From minigames/views.py:285-286:
def get_desc(s):
    return f"Tiene {calculate_age(s.date_of_birth)} años. Su artista favorito es {s.favorite_artist or 'desconocido'} y le motiva: {s.motivation or 'aprender'}."

Example Description

“Tiene 19 años. Su artista favorito es Bad Bunny y le motiva: aprender cosas nuevas cada día.”

Data Fields Used

Age

Calculated from date_of_birth field

Favorite Artist

From favorite_artist profile field

Motivation

From motivation profile field

Age Calculation

From minigames/views.py:20-23:
def calculate_age(birth_date):
    if not birth_date: return "desconocida"
    today = date.today()
    return today.year - birth_date.year - ((today.month, today.day) < (birth_date.month, birth_date.day))
Features:
  • Accounts for whether birthday has occurred this year
  • Returns “desconocida” (unknown) if no birthdate provided
  • Automatically updates as students age

Game Mechanics

Option Generation

From minigames/views.py:284-292:
target = random.choice(students)
correct_desc = get_desc(target)
others = random.sample(list(students.exclude(id=target.id)), 3)
options = [get_desc(s) for s in others] + [correct_desc]
random.shuffle(options)
request.session['interests_correct_pos'] = options.index(correct_desc) + 1
Process:
  1. Select random target student
  2. Generate their description (correct answer)
  3. Pick 3 other students and generate their descriptions (distractors)
  4. Combine into 4 options and shuffle
  5. Store the position of the correct answer (1-4)

Scoring

Session variables tracked:
  • interests_correct: Number of correct matches
  • interests_total: Total attempts
Displayed as: Correct / Total

Answer Validation

From minigames/views.py:276-282:
selected_index = request.POST.get('selected_option') 
correct_index = request.session.get('interests_correct_pos')
request.session['interests_total'] += 1
is_correct = str(selected_index) == str(correct_index)
if is_correct: request.session['interests_correct'] += 1
The game compares the option number you selected (1-4) with the stored correct position.

Profile Requirements

From minigames/views.py:268:
students = group.students.all().exclude(id=request.user.id).distinct()

if students.count() < 4: 
    return render(request, 'minigames/not_enough_students.html')
Requirements:
  • At least 4 students (excluding yourself)
  • Students should have filled out:
    • date_of_birth (for age)
    • favorite_artist
    • motivation
If students haven’t completed these profile fields, the description will show default values like “desconocido” (unknown) or “aprender” (to learn).

AJAX Implementation

From minigames/views.py:282:
return get_ajax_response(request, is_correct, 
    "¡Correcto!" if is_correct else "¡No! Esa no era su descripción", 
    'interests')
The response includes:
{
  "success": true,
  "message": "¡Correcto!",
  "correct": 5,
  "total": 7
}

Tips for Success

Before playing, visit the classmates list and read everyone’s profiles. Pay special attention to ages, favorite artists, and motivations.
If a student has an unusual favorite artist or a distinctive motivation quote, they’ll be easier to identify.
If you know some students’ profiles well, eliminate options you know are wrong.
Age narrows down possibilities significantly. If you remember who’s older/younger, use that.
The target student’s picture is shown. Associate their face with their profile data.

Role-Based Access

For Students

From minigames/views.py:259-262:
if request.user.role == 'student':
    group = request.user.student_groups.first()
    if not group: return render(request, 'minigames/no_students.html')
    group_id = group.id

For Teachers

Teachers select a class from the group selection screen.

Session State

Variables maintained:
  • interests_correct: Correct answers count
  • interests_total: Total attempts count
  • interests_correct_pos: Position of correct answer (1-4) for current round

Comparison with Other Games

FeatureStudent InterestsComplete ProfileQuiz Results
Data UsedAge, artist, motivationAge, artist, VARK, Chapman, motivationVARK, Chapman results
DifficultyMediumHardMedium
Minimum Students444
Profile RequirementsBasic infoComprehensiveAssessments completed

Technical Implementation

View Function: student_interests_game() in minigames/views.py:257-297 Key Features:
  • Dynamic description generation
  • Age calculation utility
  • Random option shuffling
  • Position-based answer validation
  • AJAX instant feedback
  • Graceful handling of missing profile data

Encouraging Profile Completion

This game works best when students complete their profiles:
1

Teachers: Remind Students

Encourage students to fill out their favorite artist and motivation during onboarding.
2

Students: Complete Your Profile

Visit Completing Your Profile for a guide.
3

Make It Interesting

The more unique and specific your profile details, the more memorable you’ll be in games.

Next Steps

Complete Profile Game

Advanced version with VARK and Chapman assessment data

Quiz Results Game

Match students to their learning assessment results

Complete Your Profile

Add your interests so others can learn about you

Learning Assessments

Take VARK and Chapman assessments for more game features

Build docs developers (and LLMs) love