Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DMP 2024]: Math Games #6

Open
9 tasks
walterbender opened this issue Apr 8, 2024 · 56 comments
Open
9 tasks

[DMP 2024]: Math Games #6

walterbender opened this issue Apr 8, 2024 · 56 comments
Labels

Comments

@walterbender
Copy link
Member

walterbender commented Apr 8, 2024

Ticket Contents

Description

While Sugar has lots of activities, you can never have enough math games and puzzles. There is a great website with lots of ideas (See https://www.cut-the-knot.org/) for Sugar activities. This project would be to develop 6 to 8 new activities based on some of Bogomolny's ideas (or some of your own ideas).

We are interested in these games:

In the proposal, please mention some specific ideas for games.

Goals & Mid-Point Milestone

Goals

  • [Game 1]
  • [Game 2]
  • [Game 3]
  • [Game 4]
  • [Goals Achieved By Mid-point Milestone]
  • [Game 5]
  • [Game 6]
  • [Game 7]
  • [Game 8]

Setup/Installation

The games will need to run in the Sugar environment and be coded in Python using GTK3 and the Sugar Toolkit. The pygame/sugargame module will be a useful resource as well.

To set up the Sugar environment, please refer to these docs.

Expected Outcome

Some new Sugar activities that are math-oriented that run in the Sugar environment. It would be great if they were also individually packaged for Flatpak.

Acceptance Criteria

The games need to be implemented as stand-alone Sugar activities. They must adhere to the Sugar HI guidelines and be oriented towards 6- to 12-year olds.

Implementation Details

Use:

  • Python3
  • sugar-toolkit-gkt3
  • sugargames

Mockups/Wireframes

Product Name

Math Games

Organisation Name

Sugar Labs

Domain

⁠Education

Tech Skills Needed

Python

Mentor(s)

@chimosky @walterbender

Category

Frontend

How to Apply

See C4GT.

@vsvishalsharma
Copy link

Hi @walterbender, @chimosky,

I hope this message finds you well. I came across the Math Games project for DMP 2024, and I'm very interested in contributing. The idea of developing new activities based on Bogomolny's games for Sugar Labs caught my attention, and I'm eager to apply my skills in Python and my passion for educational technology to this initiative.

Could you please share any prerequisites or specific steps I should follow to begin contributing? I'm keen on making a meaningful impact through this project and would love to discuss any potential ideas or areas where my contributions could be most valuable.

Thank you for considering my interest. Looking forward to your guidance and hoping to be part of this exciting endeavor

@walterbender
Copy link
Member Author

@vsvishalsharma I recommend you start by installing Sugar and experiencing some of the current activities. Then explore the "Hello World" activity...

@younglord088
Copy link

Hello @chimosky and @walterbender,

I'm eager to contribute to the development of math games for Sugar Labs. I've already started by installing Sugar and exploring current activities. Additionally, I've delved into the "Hello World" activity to gain hands-on experience. With my Python skills and familiarity with GTK3 toolkit, I'm ready to embark on this project. Here are some game ideas I'm excited to explore:

1.Lewis Carroll's Game of Logic
2.Pascal's Triangle
3.Nim
4.Tower of Hanoi
5.Fibonacci Sequence Puzzle
6.Tangram Challenge

I look forward to discussing further steps.

Best regards,
Yash Panjwani

@Arshad-Ali-1a
Copy link

Would love to work on this. I will try to create a PR of a game asap.

@Arshad-Ali-1a
Copy link

@walterbender This issue/project is not listed in Unstop's Problem statements. How can I submit the proposal then?

@walterbender
Copy link
Member Author

@Arshad-Ali-1a They asked me to make a few changes before listing it, which I did. So I expect it to be listed soon.

@Mehren7
Copy link

Mehren7 commented Apr 20, 2024

Hi @chimosky and @walterbender ,

Thank you for providing the opportunity to propose ideas for the Math Games project. I'm excited about the prospect of contributing to Sugar Labs and developing engaging math-oriented activities for young learners.

Given my background in Python programming and experience in AI and machine learning, I believe I can offer valuable insights and contributions to the project. I'm eager to apply my skills to create interactive and educational experiences for the Sugar environment.

While I'm familiar with Python and its libraries, I'm relatively new to open source collaboration. Therefore, I would greatly appreciate your guidance on the following points:
1.Setting up Development Environment
2. Understanding Sugar HI Guidelines
3.pygame/sugargame Module
4.Project Structure and Workflow
Additionally, I'm open to any suggestions or tips you may have for a newcomer like myself in the open source community.

Thank you again for this opportunity, and I look forward to your guidance as I embark on this exciting journey.

Best regards,
Mehren7

@walterbender
Copy link
Member Author

@Mehren7 There are detailed instructions for setting up the Sugar environment here I suggest you start there and explore some of the existing activities. Look at some that use pygames. The perhaps try modifying HelloWorld.

@Mehren7
Copy link

Mehren7 commented Apr 20, 2024 via email

@ashuashutosh2211
Copy link

Hey @walterbender, I'm Ashutosh, a third-year student at IIT Jodhpur, studying Artificial Intelligence and Data Science. I love math and solving problems, and I'm really interested in your project. I've made a game called "Space Shooter" using Pygame, and I'm pretty good at coding challenges too. On platforms like Codeforces, I've reached a max rating of 1550 and have a 4-star rating on Codechef. I've also made a few games using C++ and Python.

I've also learned about Game Theory, which helps with making games smarter and more fun. I'm excited to join your project and would love some guidance on how I can help out.

@walterbender
Copy link
Member Author

@ashuashutosh2211 looking forward to hearing your ideas.

@ashuashutosh2211
Copy link

@walterbender , I tried to solve some of the mentioned games and got the optimal ways to play the game. While I have some doubts regarding it -

  1. Do I have to give the idea of finding optimal ways to play game ?
  2. Or I have to find some new games related to the mentioned games ( creating new games using the ideas on the given website cut-the-knot)?

@walterbender
Copy link
Member Author

@ashuashutosh2211 The games listed are just suggestions. In terms of "solving", the idea behind Sugar is to present the user with a learning journey. For example, the 3 Utilities problem is trivial with just 1 house. Solvable with 2 houses. "Impossible" with 3 houses (unless you stretch the rules a bit). So the implementation, rather than starting at the impossible, would present the opportunity to explore the solvable solutions first. And perhaps point to some discussion of why the 3 house/3 utility problem is so difficult after they struggle for a while.

@AbhimanyuSamagra
Copy link

Do not ask process related questions about how to apply and who to contact in the above ticket. The only questions allowed are about technical aspects of the project itself. If you want help with the process, you can refer instructions listed on Unstop and any further queries can be taken up on our Discord channel titled DMP queries. Here's a Video Tutorial on how to submit a proposal for a project.

@ashuashutosh2211
Copy link

@ashuashutosh2211 The games listed are just suggestions. In terms of "solving", the idea behind Sugar is to present the user with a learning journey. For example, the 3 Utilities problem is trivial with just 1 house. Solvable with 2 houses. "Impossible" with 3 houses (unless you stretch the rules a bit). So the implementation, rather than starting at the impossible, would present the opportunity to explore the solvable solutions first. And perhaps point to some discussion of why the 3 house/3 utility problem is so difficult after they struggle for a while.

Ok sir, so what I understood by your explanation is, we need to design the solutions in such a manner, which would be easier for the learner to learn and they could explore the easier cases and then move to the tougher test cases. Am I right ? Please clarify

@libialany
Copy link

Hello, I'm Lib. I'd like to contribute, and I've been doing some research on my own. I've created a test activity called HelloSugarLab.activity this is the link: https://github.com/libialany/sugarlabs-docs/blob/main/docs/README.md. I hope will be useful to others.

I have a question: is it okay to use GTK version 3? I've seen some code using version 4, and I'd like to be sure before I continue.

@walterbender
Copy link
Member Author

@libialany GTK3 is the correct choice. The Sugar toolkit uses GTK3.

@anurag6569201
Copy link

i am excited to be part of this project hello thier @walterbender and @chimosky my name is anurag singh and i am experienced in web development with the techstack html css javascript bootstrap reactjs django mysql sqlite and also having the knowledge in data-science pandas numpy matplotlib seaborn and by this knowledge i am sure i can give proper output in this project

@walterbender
Copy link
Member Author

@anurag6569201 The goal for this year is Python-based games for the Sugar Desktop. Next year we may be able to add web-based games for Sugarizer.

@UdAyAn123
Copy link

Hi @walterbender and Team , This is Udayan From IIT ISM Dhanbad. I am quite interested by the ideas of the mathematical games like they are addressing the beauty of mathematics. I would like to submit a proposal on this so would love to discuss about the expectations of the project.
My Discord handle: udayanchatt

@walterbender
Copy link
Member Author

@UdAyAn123 I am new to discord and having trouble contacting you there. Can you try contacting me at walter.bender on Discord?

@UdAyAn123
Copy link

@walterbender I messaged you yesterday. Please look into that and provide me with a answer.
Thanks

@PriyalPB
Copy link

Hi @UdAyAn123! I'm a third year student from Cummins Pune.

I'm thrilled to join your Math Games project and offer my skill sets which has a strong background in Machine Learning ,deep learning (CNN), and Python, which seem to fit perfectly with what you're looking for.
I'm excited to explore how my expertise in maths and the love for problem solving can elevate the project. Furthermore, the integration DL with mathematics advancements could lead to a seamlessly automated system.
I'm eager to discuss further avenues where I can make meaningful contributions. Could we schedule a meeting to delve into this in more detail?

@cherrymekala
Copy link

Hi @walterbender I'm a third year student from SRM AP. I'm always passionate about doing challenges using python especially these kind of games. So I'm willing to submit a proposal for this. Along with the games that you have mentioned earlier, I have some easy and intuitive game ideas. What your thought on them and also like can we discuss regarding the necessities required for this project. Here are my game ideas , along with the ones you have mentioned

  1. Fibonacci Sequence
  2. Graph Coloring
  3. Mathematical Maze solver
  4. Number Sequence Challenge
  5. Tangram puzzles with Geometric Concepts

@walterbender
Copy link
Member Author

@PriyalPB perhaps you can contact me on discord. My id is Walter.bender

@walterbender
Copy link
Member Author

@cherrymekala nice ideas. Be sure to include some evidence that you have an understanding of the Sugar codebase in your proposal

@P-ragati
Copy link

Mathematics and games are both incredibly interesting and curiosity-piqueing topics, and I'm excited to contribute to this adventurous trip.

@walterbender
Copy link
Member Author

@P-ragati be sure to include some evidence of your understanding of the Sugar toolkit in your proposal. And some ideas about pedagogy: why will your games impact learning. Please be concrete.

@vivekmishra9631
Copy link

Hello @walterbender , I'm Vivek Mishra, a third-year NIT Karnataka student with a strong passion for building impactful web applications. I'm excited to express my interest in the Sugar Math games project!

My background includes:

Full-Stack Development Experience: I honed my skills as a full-stack developer intern at aiRender for 6 months, working with JavaScript, ReactJS, Redux, and WebRTC. This experience solidified my understanding of both front-end and back-end development.

MERN Stack Expertise: In addition to my internship, I'm also a proficient MERN stack developer, comfortable working with MongoDB, Express, React, and Node.js. This versatility allows me to tackle projects with both front-end and back-end components.

My problem-solving skills are further bolstered by my achievement of a gold medal at Worldquants Brain, demonstrating my ability to think critically and find efficient solutions. In this I used to build financial models using Python and Quant Analyst at Worldquants which tells about my Maths Skills and Python knowledge.

Apart from the mentioned above, I would like to build games like-

  1. Bourgeoise Birds
  2. Guess the square root
  3. Hangman

I believe my technical skills, combined with my enthusiasm for building meaningful projects, make me a strong candidate to contribute to the project. I'm eager to learn more about the specific requirements and how my expertise can be utilized.

@walterbender
Copy link
Member Author

@vivekmishra9631 Please look at the previous comments in this issue regarding demonstrating some understanding how to build a Sugar activity and how to ensure that the learning goals of Sugar are reflected in your efforts.

@P-ragati

This comment was marked as off-topic.

@libialany
Copy link

Hello, I've created my Flatpak activity and documented it: https://github.com/libialany/sugarlabs-docs/blob/main/portable/README.md. I hope it helps. I have a question, is it permissible to use an "runtime-version" that isn't the latest version?

@chakrapriya7
Copy link

Hello @vivekmishra9631 ,I am interested in this project and confident in my ability to contribute effectively. My experience coding in Python across various platforms has introduced me to new and innovative games, making me well-prepared for this opportunity. Thank you...

@trishanu-init
Copy link

Hello @walterbender, I'm Trishanu Nayak, a second year student at BIT, Bangalore with a strong passion for building impactful web applications. I'm excited to express my interest in the Sugar Math games project and would love to contribute.

@Nivedita-MN18
Copy link

I recently came across the Math Games project with Sugar Labs and was inspired by the opportunity to contribute to developing math-oriented activities for children aged 6 to 12 in the Sugar environment.

As someone passionate about both education and technology, I am excited about the possibility of contributing to this project. The goals outlined, particularly in developing new Sugar activities based on mathematical concepts, align closely with my interests and skills.

I have experience with Python programming and am familiar with the Sugar environment, GTK3, and the Sugar Toolkit. I am eager to learn and collaborate with the team to create engaging and educational activities for young learners.

Could you please provide guidance on how I can get involved in the project? Whether it's contributing to game design, coding, or testing, I am eager to contribute in any way I can.

Thank you for considering my interest in joining the Math Games project. I look forward to the opportunity to work together to create fun and educational experiences for children.

@CodeSage4
Copy link

Hi @walterbender ! Saw the Math Games project for DMP 2024 & love to help! I code in Python and love educational tech. Can I contribute? Let me know how! Thanks!

@Divyashetty333
Copy link

Hii @chimosky @walterbender I am Divya studying btech 3rd year in GNITS studying python from 3 years.so I want to work on this ticket.

@libialany
Copy link

libialany commented Apr 30, 2024

Hi @chimosky @walterbender , I understand that DMP 2024 is available in India. I'm from LATAM. The OTP for the registration form didn't work, but I created some content . I hope it helps anyone. link: https://github.com/libialany/sugarlabs-docs/

@chimosky
Copy link
Member

chimosky commented May 1, 2024

Hii @chimosky @walterbender I am Divya studying btech 3rd year in GNITS studying python from 3 years.so I want to work on this ticket.

I've edited the opening comment to include a link to where you can find more info, hope that helps.

@muskan006
Copy link

Hello @walterbender I am Muskan Singh recent graduate from LPU I want to contribute to sugar lab as I want to be the part of organisation.

@muskan006
Copy link

I also want to work on this ticket

@ashuashutosh2211
Copy link

@walterbender I have sent you connection request on discord and want some guidance regarding set up of sugar environment. Meanwhile I explored the above mentioned games and also thought of the other game ideas like Maze Chase , M-coloring problem in a graph (basically coloring a graph with m different colors such that adjacent nodes doesn't have same color which is also a standard problem that can be solved using backtracking) .

@vivekmishra9631
Copy link

vivekmishra9631 commented May 4, 2024

Hello @walterbender I am getting this issue
Screenshot 2024-05-04 141410
Please help me fix this. I have setup Sugar development environment on Ubuntu but when I am trying to push the code to my github, I am getting this error.

@vaibhav-sangwan
Copy link
Contributor

Seems like you're trying to push to a repository that you don't own. You should try setting up the URL for remote origin to the forked repository URL which is hosted under your GitHub username instead of the one that's hosted under SugarLabs.

@jagannathhari
Copy link

Hi @walterbender and @chimosky, I would also like to contribute to implementing the mentioned games. I'm fond of @cherrymekala's ideas too. Additionally, I have experience in creating Flatpak packages. Am I limited to using only Python3, sugar-toolkit-gtk3, and sugargames?

@quozl
Copy link

quozl commented May 7, 2024

I don't think there's a reason not to use other API, as long as such use is effective, and not the entirety of the application. For instance, adding 3D rendering to a GTK3 game might be done using Clutter or Cogl, so in addition to the toolkit and GTK3 the application would also import and use extra libraries through GObject introspection. On the other hand, if the way in which 3D rendering is added is particularly well thought out, we might instead move that into a library for Sugar 3D activities.

@sreetejadaggu
Copy link

Hello @walterbender , @chimosky
I'm here to express my sincere interest in participating in this project. After carefully reviewing the project details and objectives, I am enthusiastic about the opportunity to contribute my skills and expertise towards its successful completion.
I had an experience of 2 years in working with Python related projects.
I am confident that my involvement could add significant value to the project, and I am committed to delivering results of the highest quality.
If there are any additional steps I need to take or if you require further information from my end, please let me know. I am available for discussions or meetings at your convenience to discuss this opportunity further.
Warm regards,
Sreeteja Daggu

@Udaykantp
Copy link

Hello @walterbender I'm here to say that The project aims to develop 6 to 8 new math games and puzzles for the Sugar environment, inspired by ideas from the renowned mathematician Bogomolny's website, with a focus on engaging 6- to 12-year-olds. The games will be designed to enhance mathematical thinking and problem-solving skills in a fun and interactive way. Here Here

@walterbender
Copy link
Member Author

@sreetejadaggu @Udaykantp Please spend some time digging into the basics of how to build a Sugar activity. Perhaps starting with Hello World.

@JyotsnaJahanaviDevi
Copy link

As a passionate enthusiast of both technology and mathematics, I've achieved success in two national hackathons, demonstrating my expertise. I'm eager to contribute to this project and await confirmation of my acceptance.

@abshek7
Copy link

abshek7 commented May 12, 2024

Hi @walterbender, @chimosky,

I hope this message finds you well. I came across the Math Games project for DMP 2024, and I'm very interested in contributing. The idea of developing new activities based on Bogomolny's games for Sugar Labs caught my attention, and I'm eager to apply my skills in Python and my passion for educational technology to this initiative.

Could you please share any prerequisites or specific steps I should follow to begin contributing? I'm keen on making a meaningful impact through this project and would love to discuss any potential ideas or areas where my contributions could be most valuable.

Thank you for considering my interest. Looking forward to your guidance and hoping to be part of this project

@walterbender
Copy link
Member Author

walterbender commented Jun 14, 2024

Weekly Goals:

Week 1:

  • Sync up goals with Sugar team.
  • Scaling and responsiveness for Towers of Hanoi.
  • Keep aspect ratio in Towers of Hanoi.

Week 2:

  • Tower of Hanoi graphical improvements.
  • Improve game-play of Towers of Hanoi.
  • Make game state manager for Towers of Hanoi.

Week 3:

  • More graphical improvements to Towers of Hanoi.
  • Add pause menu to Towers of Hanoi.

Week 4:

  • Create buttons for various levels in Towers of Hanoi.

Week 5:

  • Graphical changes to Number guessing game.
  • Improve game-play of Number guessing game.
  • Add more game modes

Week 6:

  • Improvements to Help menu in Number guessing game.

Weeks 7 & 8:

  • Progress - Three Utilities
  • Progress - Fractals

Week 9:

  • Graphical improvements to Three utilities.
  • Fix bugs in Three utilities.

Week 10:

  • Add parameter controls to Fractals.
  • Create sprite classes for simulate button and fractal iterator.
  • Add game state for Fractals main menu.
  • Graphical changes to Fractals

Week 11 & 12:

  • Graphical changes to Bunny Islands.
  • Improvement of Bunny Islands game play.
  • Create game state for Puzzle board.
  • Improvement of Puzzle board game play.

@shivam1750

This comment was marked as off-topic.

@chimosky

This comment was marked as off-topic.

@muskan006

This comment was marked as off-topic.

@vaibhav-sangwan
Copy link
Contributor

vaibhav-sangwan commented Jun 20, 2024

Weekly Learnings & Updates (To be filled by contributor)

Week 1

  • Scaling approaches for Pixel Art.
  • Implementation of the approaches in Pygame, and testing them out with Tower Of Hanoi Activity.
  • Importance of Design Choices: Absolute vs StretchToFill vs KeepAspectRatio, Base Resolution, Aspect Ratio and Tile Size

Week 2

  • Dithering - the process of using patterns to create the illusion of greater color depth.
  • Outlining and it's impact in giving the sprites a cartoonish feel.
  • Game States and creation of a simple Game State Manager for Tower Of Hanoi activity. A game state refers to a particular phase or screen that the player interacts with. It could be as simple as a main menu, a pause menu, or as complex as in-game levels, cutscenes, and game-over screens. Each state has its own unique set of rules, visuals, and user interactions. By managing these game states effectively, we can control the flow of gameplay and provide players with a seamless and immersive experience.
  • The importance of non-core elements of the game. Introducing randomly generated moving clouds to Tower Of Hanoi enhanced it's visual appeal. This is not important for the gameplay in any sense, however adding them to the game proved to be the right choice.

Week 3

  • Creation of multi-line text renderer using pygame: I implemented a utility function that can be used in future games as well. This function takes a block of text and a surface on which the text needs to be rendered. Moreover, it takes the starting position, as well as right-margin. It works by iteratively blitting every word on the surface and then updating the values of x and y for the next word to be rendered. If the currernt word exceeds the surface limit, then y is updated, and text is moved to new line.
  • Importance of filler backgrounds to avoid having blank lines on screen.
  • Implementation of fade-in and fade-out effect for clouds: I used linear interpolation to correctly set the opacity of clouds such that they give an impression of fading into and fading out of scenes.

Week 4

  • Creation and switiching of multiple game states: I created game states for Help Menu, Level Select Menu and Pause Menu. To enhance user experience, I had to include ways to switch back and forth between different game states.
  • Importance of testing and bug fixing: when run from main, the Tower Of Hanoi activity was stretching more than the available resolution. Similar other scaling issued were encountered during testing that needed to be fixed.
  • Introduction to flake8 - a Python linting tool that checks your Python codebase for errors, styling issues and complexity. Many styling errors got introduced during the development of these game states which needed to be fixed. This made me realize the importance of clean and standardised way of coding in Python.

Week 5

  • Importance of modular code in creation of scalabale applications: I refactored the code for Number guessing activity so that it is divided into component classes and different game states instead of one single large file.
  • Multiple ways of enhancing user experience in Classic Mode: The traditional method to play this game is to guess a number and then computer telling the user whether their guess is correct, too low or too high. However, using colors to represent closeness to the target seemed like a more user friendly and more engaging way to achieve the same result. To achieve this, I implemented a triple color gradient using linear interpolation. If the computer thinks of the number 23, then the number having maximum distance from it, is 99. And it is colored the darkest shade of red. As we move closer to 23, the color of number boxes first changes to shades of yellow, and then finally it changes into shades of green.\
  • Enhancing the UI of Rev Mode in number guessing activity by adding outline-on-hover effect to various buttons and by adding instructions to the game mode instead of directing the users immediately to the gameplay screen.

Week 6

  • Implementation of Particle System in Pygame and the effect it has on visual experience of the game: I wanted to add a particle eruption effect to number boxes in Number Guessing activity. This would enhance the visual eaxperience of users. But while trying to add this effect, I faced multiple problems. First of all, there was no such feature provided by pygame. So I implemented a particle system in which multiple sprites would be generated and emitted from a source position. These sprites would emit in random directions at a constant speed and their size would start diminishing as they move away from the source. When their size becomes 0, they are removed from the particle group and collected by Python's Garbage Collector.
  • Implementation of free-falling movement under gravity: These particles, however, moved in a straight line. They were giving an effect similar to shooting stars rather than particle eruptions. To achieve the effect of eruptions, I split their velocities into x and y components using trigonometry. And every frame, an acceleration is added to the y component of velocity. This gave a similar effect to that of objects freely falling under gravity.
  • Creation of a page system in Help Menu of the game: During the creation of game state for Help Menu, I realised that the content wasn't fitting on the screen. So, I split the information about rev mode and classic mode in two different pages and created a page flip button that would switch the content on help menu's screen. This approach can be implemented in future games as well where the number of pages exceed 2.

Week 7

  • Implementation of animated background for Three Utilities Main Menu: consists of a light-grey grid where the intersections of rows and columns meet to make nodes. These nodes then function as sources and sinks of supply lines. Nodes are chosen at random to work as a source of supply lines. Then a neighboring node is chosen at random to work as a sink of the supply line. A supply line is emitted from the source node and moves with a constant speed towards the sink node. The rendering of these supply lines was pretty tricky, as the supply lines could be in any of the following phases, each of which needed to be handled differently:
    Generating - line hasn't been generated to it's full length.
    Transmitting - line has completely generated and is moving towards the sink node.
    Sinking - line is falling into the sink node, with it's visible length reducing every frame.
    Destroyed - when line has completely fallen into the sink node, it's to be removed from the memory.

Week 8

  • Generation of fractals using L-systems: For the generation of fractals, I came across the concept of Lindenmayor systems (or L-systems). Originally the L-Systems (short term for Lindenmayer systems) were devised to provide a formal description of the development of simple multi cellular organisms while illustrating the neighborhood relationships between plant cells. Later on, this system was extended to describe higher plants and complex branching structures. The realistic modeling of plant growth is of very high value to biology, physics and also for computer graphics (e.g. video games are using and still working on it to improve plants/forests rendering).
  • L-Systems consist of formal grammars which includes alphabets, constants, axioms and production rules. These L-Systems can generate sentences in an iterative manner by starting with the axiom and applying the production rules on each iteration. The generated string is very hard to interpret as is. It needs to be parsed and correctly depicted using visual elements to derive a meaningful pattern. These patterns are nothing but the fractals we are looking for.

Week 9

  • Importance of testing and bug fixing: One of the puzzle breaking bugs was that the supply line wasn't being rendered if the mouse went out of intermediate screen boundary. To overcome this, I added a boundary background and made appropriate changes in the Utility class to not let mouse, and hence the supply lines out of this boundary.
  • Creation of win screen and help menu to Three Utilities.

Week 10

  • Enhancing UX with parameter controls instead of key events: the fractal formation can be controlled with these controls Add parameter controls. These controls consist of sliders for properties such as angle, initial angle, number of iterations and thickness. These sliders also consist of step-up and step-down buttons to enhance the user experience. These sliders have a slider ball inside of them which can be moved using a mouse hold over them. Their x-position then changes according to the position of the mouse. The property value is calculated using a linear interpolation method. The minimum property value is attached to the leftmmost slider ball position and the maximum property value is attached to the rightmost slider ball position. To provide finer control to the users, the step buttons are provided on the sliders.
  • Using pygame's draw submodule to make interactive logos: When you move to touch any of the characters in the game logo, they move away and up from their original position giving a cool little effect. Instead of making different movable sprites for different characters, I made the logo such that it consists of two instances of game name's text rendered over it. Then I hide one of the instances by drawing over it using pygame's draw submodule. Whenever the user tries to move their mouse over to a character, the rectangle drawn over other instance moves downwards to the visible instance, giving an illusion that the character is moving upwards.

Week 11

  • Importance of good game design prior to development: The puzzle board game consists of a grid on which all the puzzle tiles can be placed. These tiles will be automatically snapped to the grid when mouse is hovered over it. The major components are Grid and Tile. Tiles can exist in the following states:
    Placed or Unplaced
    Focused or Unfocused
    When mouse is clicked on an unplaced tile, it is put into focus. Any tile that was previously in focus will be returned to it's previous state - whether placed or unplaced. Now, when a tile is in focused state, certain actions can be performed on it. If the tile is placed and focused, deletion from grid operation can be performed on it using 'D' key. Else if tile is focused and unplaced, rotate clockwise and rotate anticlockwise operations can be performed on it using right and left arrow keys respectively.
  • Creation of Grid System in pygame and implementing methods such as snapToGrid: The tiles also have a snap method attached to them that controls their snapping to grid behaviour. The grid is divided into rows and columns. So, the snap method gets the topleft coordinate of the held tile, and makes it a multiple of row and cell height, giving the effect of snapping. Also, tint colors are added to the held tiles. A red tint suggests that the held tile cannot be placed because some or all of the underlying cells are occupied. Whereas a green tint suggests that the tile can be successfully placed.

Week 12

  • Using multisourced BFS to check for win: Implemented a multisourced Breadth First Search algorithm from all blue bunnies. If the search encounters any red bunny, then it means that blue bunnies can reach red bunnies, hence failing the win criteria.
  • Enhancing user experience and accessibility by adding buttons instead of using key events and improving the visual elements: Added the buttons for delete tile operation, rotate tile clockwise operation and rotate tile anticlockwise operation. Updated the puzzleboard background to include ocean and a beach on which the grid and tiles are placed, setting up a light and vacation mood to the overall game theme.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests