My presentation last week went pretty well I think. Of course, the game crashed during the demo, which I estimated to be about a 1/25 chance. But the next time through the game everything worked pretty flawlessly. I had my defense yesterday, which basically consisted of explaining why I made the decisions that I did for my project. I'll have to document in the QuestionPage.java where exactly I think that bug in the game occurs. All that's left is compiling everything into a binder and flash drive, and then I'll officially be done with computer science here at SNC. Among all the joy, laughs, frustrations, and all-nighters, I loved being a part of the computer science department, and I think it's sufficiently prepared me for what is ahead. It's a very bittersweet feeling to say the least
I'll be presenting my project tomorrow at 9 PM. This is pretty unfortunate since I've been going to sleep around 9:30 for the past few weeks, and that's about the time I'll be finished presenting. I'm sure my nerves will wake me up quite a bit, though. I usually get extremely nervous and lightheaded when doing a presentation, but I think I'm confident enough about my project to not freak out too much beforehand and during. There are exactly two things in my app that don't work the way I intended, and that number is a lot lower than I had anticipated at the beginning of the semester. One of those things is that the app crashes while playing the game seemingly at random, and very very rarely. So, I just need those odds to be in my favor during my one demonstration, and the game will be practically seamless.
I would have liked to add a few more fun features to the game but ultimately I ran out of time. Fingers crossed for a smooth presentation! I was able to get the quiz to recognize which selected answer was the correct one. It ended up being more simple than I thought. Before shuffling the array of answers, I compare the string at position 0 (the correct answer) to the string of the option that was selected.
The game consists of getting Lewis the Laptop back to Earth, from Pluto, before running out of battery. So I had faced the task of passing the battery, planet, and correct/incorrect data between activities. This ask on Stack Overflow helped me immensely in doing that: http://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-in-android-application With each question answered, either right or wrong, the battery decreases and is displayed on the results page. The user advances a planet each time they get a question correct. It takes 6 correct answers to get to Pluto, but the battery capacity allows for the user to take 8 questions to get there if they don't get each question right. If they get to Earth, I pass the data that they won, otherwise if the battery runs out and they are not on Earth I pass the data that they lost. In order for my static variables (for battery, planet, correct/incorrect) to reset upon starting the game again, I put these variables in a class which contains functions that reset these variables on the game's homepage. So, as for the quiz, all that needs to be done is to fill in the actual questions, since right now I have "question1: option1, option2, answer, option3" as the questions and answers. All I have to do for this is plug in those strings to the xml file that is retrieved. As for the rest of the app, everything is about finished. My "survey" tab ended up being a "classes" page that contains class descriptions/links to class descriptions for the major and its concentrations. All that I need to do is make things like the font and margins consistent across the activities. I found out that my presentation is on Wednesday, 04/26, so I'm right on track to getting what I want done by then. Over break I was able to get some work done on the quiz. I decided to have the story take place in space, with the protagonist being a laptop. It doesn't make much sense but it looks good so far. I drew and finished the planet map for the game, and I've got questions shuffling upon starting a new game, as well as their corresponding answers/options shuffling positions. I left off trying to get access to the option which is the answer, which doesn't seem very complicated since I named the item "answer," but for some reason I've been having trouble getting at the name of that item.
Overall it is going well. I received some feedback from classmates on what the 4th tab should consist of, so I'll get started on that as well later this week. I've made quite a bit of progress in developing the other pages such as the Meet the Students page, Home page, and begun the Survey page. These are not terribly data-heavy so it's mostly just a matter designing the pages well and making sure the functionality is there, and then testing and debugging the elements that are not functional. I'll admit the visuals and design in Android Studio are more complicated than I had expected. The different layouts can decide where you are able to drag and drop elements, but I've since learned how to work with that.
My home page currently consists of a slideshow and screenshots of student programs, with some info that toggles beside it. I just received two more screenshots from Bryan and Donny so I'll have to work on adding those. I'm at a loss for what else to add to my Meet the Students page, I currently have an ExpandedListView that displays 7 student capstone sites (children of view) of each graduating class (parent of view) from 2017, to 2014. I could potentially include more if I wanted, but I thought this was sufficient for now. I think I'll add an option for the user to view all capstone projects if they desire. My goal is to have my four pages done by the end of the month, so I can focus the last month on the quiz, both UI and backend. My ideas about how I want my in-app game to appear keep changing, and though I've got the intro page of the game mostly done, I focused on doing my homepage this week instead. I've got tabs up, a slideshow of pictures of cs students in action (soon to be able to swipe through), and a box that toggles color and text. At first I wanted those boxes to serve as quick cs stats (how many schools are teaching programming, etc) but I decided this portion of the home page will serve as a sort of gallery for program final-products. I'm going to email the class tomorrow to ask for any screenshots of past projects, and then use the toggle boxes to display info about the student/project.
I didn't get a response when I emailed the class last week about volunteers for me to display their capstone site, but a few in class did say to me that I could take whatever I wanted of theirs. So instead what I think I will do for my "meet the students page" is just link to compsci02 capstone sites from previous years. Otherwise I would say things are going smoothly. I'm still not completely familiar with Android Studio, but the process is slowly getting easier. I would say I'm about halfway done with my homepage, and I hope to speed things up for my other pages, as I expect the in-app game to take the most time and effort. I went back to using Android Studio and so far am not having many issues. There's a bit of a learning curve in dealing with what files are involved in mobile development and what they do, but right now I've got my Floating Action Button (which serves as an "about the app") going to a new page, 4 tabs set up, and one of them going to my quiz front page which has about half of the layout done. Since the quiz seems the most complex, I think I'll work on how I'm going to be storing and passing the data for that, as well as the layout of the quiz itself. I might get the bare bones of the other pages initialized, but for right now I'm going to focus on the quiz and trying to tie in some creative elements to make it more fun.
I was able to get a "hello world" by using Android Studio, but I found an option which would allow me to write the app in C# rather than C++, which is preferable for me. I installed Xamarin Studio and immediately had a ton of issues with it. After spending a few hours just getting the project to run on my phone, there were issues with the designer, particularly the element drag/drop functions. So, I used Xamarin for Visual Studio instead, and despite my efforts cannot get so much as a button to show up while debugging on my phone. I need to start getting things to work soon, so perhaps I'll settle for Android Studio later this week if this gives me too much more grief.
I've done a bit of research, and it would be very easy to implement a website that is responsive (compatible with all screen sizes, good for mobile) with a framework like Bootstrap. I downloaded it and experimented a little, but I think I want my project to be a little more in uncharted waters for me. Rather than developing a mobile-friendly website, I've made the decision to make the CS Kiosk an Android Application. Developing a mobile application will be an entirely new experience for me, and I'm excited to dive into it. I've installed Android Studio (developer.android.com/studio/install.html) and plan on getting a "hello world" within the next few days. I also have a good idea of how I want to design the basic UI for the front page.... Of course I still need to work on what the tabbed pages will entail. But I think this is a solid start while I experiment with the development kit.
Project was just assigned last week, and my project description was quickly changed within the first two days. Originally the task was to create a screensaver for the SNC TVs which served as an entertaining and interactive game for viewers. Due to limitations on the Apple TVs, the project description changed to become the "CS Kiosk," which is intended to showcase the CS major by providing information about the program, an interactive game, feature past projects, and any other creative aspects I choose to include.
My first plan of action is finding a platform which would assist the web design, and allow for mobile compatibility. I've looked into using Bootstrap as a possible aid in this, but it's going to take a bit of research as I have no experience using it. |
Weekly BlogThis is where I will be documenting my progress throughout the semester |