Final Project -Rama

For my final project, I delved into graphic design, culminating in the creation of a cooking game called “Mansaf Teta.” This game is a symbol of Palestinian culture, centered around the preparation of a traditional dish. Named after the colloquial term for “Grandma’s Mansaf,

” it aims to encapsulate the essence of Palestinian culinary heritage.

The gameplay involves a series of interactive cooking actions, each tied

to a physical component controlled by an Arduino board. The first step is cooking the lamb, where players gauge the ideal temperature using a potentiometer. Next, stirring the “laban” (fermented dried yogurt) is simulated using one button to create a stirring motion. Finally, the addition of garnish is triggered by another button, offering players a holistic cooking experience.

My favorite part of the code involves programming the potentiometer and working with images to create a visualization of the stove, shown below:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if (typeof val1 !== 'undefined') {
//console.log("val1:", val1);
// Respond to temperature
if (val1 < 500) {
image(toocold, 0, 0, w, h);
if (typeof val1 !== 'undefined') { //console.log("val1:", val1); // Respond to temperature if (val1 < 500) { image(toocold, 0, 0, w, h);
  if (typeof val1 !== 'undefined') {
    //console.log("val1:", val1);
    // Respond to temperature
    if (val1 < 500) {
      image(toocold, 0, 0, w, h);
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
} else if (val1 > 600) {
image(toohot, 0, 0, w, h);
} else if (val1 > 501 && val1 < 599) {
image(mediumtemp, 0, 0, w, h);
}
if (val1 < 500) {
image(low, 0, 0, w, h);
} else if (val1 > 600) {
image(high, 0, 0, w, h);
} else if (val1 > 501 && val1 < 599) {
image(medium, 0, 0, w, h);
}
if (val1 >= 500 && val1 <= 600) {
} else if (val1 > 600) { image(toohot, 0, 0, w, h); } else if (val1 > 501 && val1 < 599) { image(mediumtemp, 0, 0, w, h); } if (val1 < 500) { image(low, 0, 0, w, h); } else if (val1 > 600) { image(high, 0, 0, w, h); } else if (val1 > 501 && val1 < 599) { image(medium, 0, 0, w, h); } if (val1 >= 500 && val1 <= 600) {
    } else if (val1 > 600) {
      image(toohot, 0, 0, w, h);
    } else if (val1 > 501 && val1 < 599) { 
      image(mediumtemp, 0, 0, w, h);
    }
    if (val1 < 500) {
      image(low, 0, 0, w, h);
    } else if (val1 > 600) {
      image(high, 0, 0, w, h);
    } else if (val1 > 501 && val1 < 599) { 
      image(medium, 0, 0, w, h);
      
    }
    if (val1 >= 500 && val1 <= 600) {
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print("checking here: "+valInRangeTime)
valInRangeTime += deltaTime; // Add the time elapsed since the last frame to the timer
if (valInRangeTime >= 2000) { // Check if val1 remains in range for more than 3 seconds
print("going to next image")
background(next1); // Display the image
if (mouseIsPressed && mouseIsPressed && mouseX > w / 4 && mouseY > h / 2) {
gameState = 3; //go to first part
}
}
} else {
// If val1 goes out of range, reset the timer
valInRangeTime = 0;
}
}
}
print("checking here: "+valInRangeTime) valInRangeTime += deltaTime; // Add the time elapsed since the last frame to the timer if (valInRangeTime >= 2000) { // Check if val1 remains in range for more than 3 seconds print("going to next image") background(next1); // Display the image if (mouseIsPressed && mouseIsPressed && mouseX > w / 4 && mouseY > h / 2) { gameState = 3; //go to first part } } } else { // If val1 goes out of range, reset the timer valInRangeTime = 0; } } }
      print("checking here: "+valInRangeTime)
      valInRangeTime += deltaTime; // Add the time elapsed since the last frame to the timer
      if (valInRangeTime >= 2000) { // Check if val1 remains in range for more than 3 seconds
        print("going to next image")
        background(next1); // Display the image
        if (mouseIsPressed && mouseIsPressed && mouseX > w / 4 && mouseY > h / 2) {
          gameState = 3; //go to first part 
        }
      }
    } else {
      // If val1 goes out of range, reset the timer
      valInRangeTime = 0;
    }
  }
}

 

Throughout the game-making process, I encountered challenges, especially with establishing a stable serial connection and some game logic. However, with help and guidance from professor and problem-solving skills, I managed to overcome these obstacles and bring my thoughts into a final product.

Looking ahead, I would add more to this project. This includes expanding the variety of sensors on the Arduino board to introduce more nuanced interactions and incorporating additional audio effects to heighten immersion.

Despite these challenges, I take pride in the design and color palette of the game, which I believe enhances the overall experience for players, immersing them in the rich tapestry of Palestinian culinary culture.

 

 

 

Leave a Reply