Midterm project
Midterm Project : Design and Prototype
Help Bubble escape a haunted dollhouse
The game involves a 3D figure of Bubble that interacts with the dollhouse using a magnet sensor. The experience includes audio cues, screen prompts, and dynamic lighting effects to create a spooky atmosphere. Note: The game's mechanics rely heavily on user interaction and decision-making, with the goal of finding keys and managing battery life to ultimately determine the character's fate.
This is an interactive game set in a haunted dollhouse featuring characters from the Powerpuff Girls series. The game involves five steps:
Step 1:
Approach the haunted dollhouse.
Activate the journey by placing a bubble figure on a magnet sensor plate.
Encounter various audio, visual, and lighting effects, including scary themes, instructions, and changing lights.
Step 2:
Play a game on the 3rd floor to find a key.
Choose between two rooms with different outcomes: one has a key, the other has a vampire that reduces your battery life.
Interact with Bubble to make progress by placing her on the board.
Step 3:
Move to the 2nd floor with Bubble.
Play a similar game to find a key, again choosing between rooms.
Step 4:
Return to the 1st floor with Bubble and repeat the game to find a key.
Step 5:
Based on the remaining battery life, decide whether Bubble can escape or has to stay in the dollhouse.
Testing Hall effect ( magnet sensor )
Hall Effect ( Magnet sensor)
const int magneticSensorPins[] = {11, 12, 13, 14, 15, 16, 17, 18, 19};
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
bool led2On = false;
bool led5On = false;
bool led8On = false;
bool allGroup1On() {
return digitalRead(ledPins[0]) && digitalRead(ledPins[1]) && digitalRead(ledPins[2]);
}
bool allGroup2On() {
return digitalRead(ledPins[3]) && digitalRead(ledPins[4]) && digitalRead(ledPins[5]);
}
void setup() {
for (int i = 0; i < 9; i++) {
pinMode(magneticSensorPins[i], INPUT_PULLUP);
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
Serial.begin(9600);
}
void loop() {
// Print sensor readings
for (int i = 0; i < 9; i++) {
Serial.print("Sensor ");
Serial.print(i + 1);
Serial.print(": ");
Serial.print(digitalRead(magneticSensorPins[i]) == LOW ? "Triggered" : "Not triggered");
Serial.print(" | ");
}
Serial.println();
if (digitalRead(magneticSensorPins[1]) == LOW) {
digitalWrite(ledPins[1], HIGH);
led2On = true;
delay(100); // debounce
}
if (led2On) {
if (digitalRead(magneticSensorPins[0]) == LOW) {
digitalWrite(ledPins[0], HIGH);
delay(100);
}
if (digitalRead(magneticSensorPins[2]) == LOW) {
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[0], HIGH); // Turn on LED 1 when LED 3 is on
delay(100);
}
}
if (allGroup1On() && digitalRead(magneticSensorPins[4]) == LOW) {
digitalWrite(ledPins[4], HIGH);
led5On = true;
delay(100);
}
if (led5On) {
if (digitalRead(magneticSensorPins[3]) == LOW) {
digitalWrite(ledPins[3], HIGH);
digitalWrite(ledPins[5], HIGH); // Turn on LED 6 when LED 4 is on
delay(100);
}
if (digitalRead(magneticSensorPins[5]) == LOW) {
digitalWrite(ledPins[5], HIGH);
delay(100);
}
}
if (allGroup2On() && digitalRead(magneticSensorPins[7]) == LOW) {
digitalWrite(ledPins[7], HIGH);
led8On = true;
delay(100);
}
if (led8On) {
if (digitalRead(magneticSensorPins[6]) == LOW) {
digitalWrite(ledPins[6], HIGH);
delay(100);
}
if (digitalRead(magneticSensorPins[8]) == LOW) {
digitalWrite(ledPins[8], HIGH);
digitalWrite(ledPins[6], HIGH); // Turn on LED 7 when LED 9 is on
delay(100);
}
}
}