New hangman wireframes

This is the splash page (opening screen?) for my game. Simple, explanatory, exciting.

This is the splash page (opening screen?) for my game. Simple, explanatory, exciting.

Just finished mocking up the layout for Phase II of SA2020 Hangman. This time I’m including more complexity that involves a status bar (to show how close you are to reaching success in 2020) and some icons to represent lives. This time, I wanted to reverse the standard hangman punishment mechanism and make the game about rewarding success, since SA2020 is all about celebrating positivity. To do this, I want to create different levels of achievement that correspond to our 11 cause areas, and each time you guess a word in an area you get closer to achieving the goals and reaching the year 2020.

This is the main view of the game. Since it's just animations adding with each achievement, the overall view won't really change.

This is the main view of the game. Since it’s just animations adding with each achievement, the overall view won’t really change.

With each achieved level, some improvement to San Antonio relating to that cause area will be animated. So, if you guess the Transportation word, a new road will appear in the city. If you guess the Education road, school busses will start driving on the road. If you guess the Arts & Culture word, fiesta music will start to play, etc. One of the biggest challenges will be coming up with a feasibly-animatable improvement for each area (Family Well-Being??). That’s the basic premise, and since it’s level oriented I wanted to give people more chances, so there will be a counter for failures that will let them try new words until they get through a cause area (I can’t decide if I even want to make it so people can lose… it might just let them loop through until they get it. In that case I’d probably want to include a ‘quit’ button for those who are terrible at hangman and need to escape…).

 

The Small Fundamental

Tim Duncan Western Conference Player of the Week jussayin.

I’ve made some promising headway into my final project, and although the steps seem small, I am fairly proud of them. One must keep pounding the rock to make it crack, as they say.

For the past couple of weeks my task has been to figure out how to store the list in my to-do list app on the device, and I’ve finally worked through the process of reading/writing files in Objective-C. For a while, my lack of direction led me down some interesting but not-useful paths as I tried to figure out the way to retain a list, or array, or something that would exist once the app closed. It seems simple to me now, thinking in terms of file reading & writing, but feeling around in the dark for a bit was somewhat disorienting.

The tool I finally found was a slap-on-the-forehead obvious one: I returned to the Objective-C tutorial on Lynda.com. Of course Lynda would be my guiding light here. But it seems that I’d become so wrapped up in Xcode that I’d forgotten how little I actually knew of the language I was working with. And of course, it’s nothing all that difficult.

After attempting to look at class creation, and revisiting segues for useless amounts of time, I finally discovered Chapter 9 of Simon Allardice’s Essential Training in Objective-C, which looks at File Management. These four short videos gave me the hugely powerful tools that I’ll be working off of for the rest of my project: reading and editing text stored in a file on the device. I practiced alongside his work on strings, editing and displaying them in the experimental app that I currently have going, although I think the video I’ll find most useful and will return to most is the one on archiving objects and creating property lists with keys.

It makes the most sense to me to use keys and property lists to story to-do list items, because I can continue to build on the properties of each item as I make the app more complex, and give the user more options in terms of descriptive data for each item. Playing around with property lists was slightly more complex than reading strings from text files and appending strings to the files, but I now feel empowered to really make this app work in the fundamental way I envisioned it. Yes, it’s a very basic aspect of coding, but I still feel proud at these moments. And that’s really what it’s all about, right? The pure joy of figuring it out and making something work? That feeling of empowerment to accomplish a task and solve a problem?

My next task is to determine the essential structure of the app I want to continue with, specifically in terms of the list display. It seems very simple to use a label and display text, or even an array, but I’m also thinking about using a table view controller that populates with an array, that can then hold notes and dates and values within the properties of each item.

I also need to figure out how the counter element will work in whatever context I end up with, because I still want to somehow gameify the app even if that just means a simple score kept for checked-off list items. But honestly, even though all of these pieces are complex in their own way, I feel totally empowered to figure them out. I’d forgotten the feeling of crossing that border between total stupefied powerlessness and comprehension, and it feels good. And even if it’s just for this brief moment in the broader timeline of the project, I will enjoy it for all it is.

River Challenge

Watch out for the alligator!

Watch out for the alligator!Here I am finished with the River Challenge assignment (here’s my .swf), the last solid piece of schoolwork standing between me and this short-but-necessary holiday interlude. All my roommates have gone home and I sit alone in my creaky house. Even my cat has left town for Thanksgiving. These century-old walls creak in the lonely silence. I might turn this into a horror story… “ESCAPE THE RIVER” …or something. I’m distracted. I need to get out of this town.

To keep track of my issues along the way, I decided to pseudo-live blog my working experience (which means keeping track of my progress in bullet points and saving drafts along the way…)

These are the problems/issues I encountered, along with some random thoughts:

  • The public boolean variable southShore wouldn’t work unless I declared it in each .as file. Isn’t that the purpose of public variables, to work without having to do that?
  • trying to pass arguments to the checkFarmerCollision function causing some pains… tried creating another string variable called “animal” to use within the function as a placeholder for whatever animal I passed it, but that freaked everything out. Turns out it works if you just use “wolf.”
  • Losing mechanic problem: the boolean value for the animals’ location doesn’t change until they are set down, but the farmer’s location changes with frame checks. So the game thinks certain animals are on different shores before they are set down. OHH this is because it has to be in the frame event function, duh. NOPE NOT TRUE ACTUALLY. OOHHHH ok I figured it out. The checkForWin function call can’t be in the ENTER_FRAME function because the boolean doesn’t change until the space bar is hit. It has to go in the if statement inside the keyDownFunction and only run if the space bar is hit (because if it’s the up/down arrows, then it will be confused about the whereabouts of the animal versus the farmer). OK.
  • I just heard a noise and thought there was a murderer but it was a giant moth in the dining room light.
  • Solved the river loophole by making it so the user couldn’t put any animal down in the river. Suckers.
  • GOT THE ALLIGATOR TO MOVE FIRST TRY. This was a good idea, I think this process actually helped me understand the timer-as-animator idea better even though I mostly re-typed the code from the air raid assignment. I suppose it’s true what they say about repetition.

Ok, finally finished. My victory/loss mechanism isn’t the most creative, but I need to finish this and turn the TV on so I can stop hearing every floorboard settle and assume its my impending death. Maybe I should get a dog.

Happy Thanksgiving!

AirRaidAirRaidAirRaid

Finished the Air Raid program in class Tuesday, not too many problems. Still not 100% comfortable with the use of timers to control animation, but my understanding is more solid than before. Looking forward to a class exercise that’ll take me out of the book, as that always helps things click. Here’s my .swf.

Back to the Beast

Returning to Xcode after even a week without touching it was a daunting task. Particularly after each daily love-affair with Flash’s beautifully simple setup and logic. I’m sure Objective-C is beautiful to those with a trained eye, but to me it’s just a lot of angry hexagons telling me where things are wrong that I don’t understand.

In setting up my final project for this endeavor, this week I started on the basic (very basic) structure of the to-do list app that I want to create. I had to pare down my fanciful imaginings into the most fundamental of functions that this app has to do: take text that the user inputs and add it to a list that appears, and store that list on the device for future use. I also want to set up a basic counter to tally when things get checked off the list for gamification purposes, but that seems like phase 1.2 in this fundamental stage.

I set up the interface originally using a table view controller, but then I realized that I have no idea how to use a table view controller. With my main experience concerning text fields, buttons, and labels, I decided to first get a basic interface working that would take text from a text field and populate a label with it at the push of a button. This should be easy for me since it’s exactly what I did with the madlib project, but simpler. But oh no, not the case.

Don’t get me wrong, it definitely went more smoothly than the laborious process of the madlib project. I think I have all the basic pieces in place, mostly because I copied almost the exact code and structure of the madlib pieces. But I keep getting error messages on lines that Xcode automatically includes that are literally identical to my functioning madlib app. It seems that in certain cases Xcode decides that, even though I typed the code precisely as it should be, it doesn’t want to accept it because I didn’t generate some connection some specific way that would automatically make the code be there. I think that’s what’s happening now, because I cannot for the life of me discover what could be wrong with this code. Of course, that doesn’t at all mean there isn’t something blatantly incorrect that I just can’t see.

I’ve decided that Xcode is just overly sensitive. It really needs to calm down and accept when things are correct. But that also means that I can’t check to see if even my most basic structure is functioning because the app won’t build. I already started over twice and my conclusion is that Xcode is a drama queen.

I need to figure this out quick so that I can move on to figuring out data storage, dynamically editing that stored data, and keeping a counter. It seems I can predict what I’m doing this weekend.

Cue Vintage Siren…

AIR RAAAIIIIIDDD!!!

Just finished working through chapter 5 in Game Programming University. The assignment took me about 1.5 hours, thanks much to pre-created .fla files. I was not able to open the CS5.5 file on TLEARN but I just downloaded the .fla from the book’s website. The downside to doing that was that this file brought a lot of baggage as a finished product, but I was able to comment out all of the on-timeline code and some of the more extraneous things to make it work for me. Continue reading

Seeing Stars

Here’s the link to my stars .swf file. I finished this assignment in class on Tuesday with few hiccups, and ended up with a good bit of time to help people which felt really good. There’s much to be said for learning in the process of teaching; it definitely helped solidify everything to have to detect errors in someone else’s code and then explain the solution.

Flash is so easy to code in it makes me really upset at Xcode for being so elitist and complicated. But I suppose there are other reasons for that. I feel like every time I think “Hm, I wonder how you do that in ActionScript,” I can immediately find a built-in method that exactly accomplishes what I needed. Such as, putting the stars on the stage in opposite stacking order so they never cover up the buttons. That’s as simple as using addChildAt() rather than addChild(). Miracles of simplicity at work.

I also figured out how to make the Insanity button work using the frame event listener. It’s very satisfying to understand these functions so easily, but I feel dangerously tricked into coding comfort levels that definitely do not translate into my Xcode project. I hope to one day feel so comfortable in Apple’s trendy environment as Adobe’s misunderstood and under-acknowledged.

Letter Madness

Just finished the Letter Madness assignment, took me about 30 minutes (thank you Dr. Delwiche for the CS5 file, so much time saved). I definitely benefited from all of the comments from classmates’ experience with the assignment, but I also feel pretty confident on my handle on this as3.0 stuff… compared to Xcode and Objective-C it’s like magic. You can do so much with so little code and effort! I definitely and very pro Flash at this point. I think all of the repetition has been invaluable, I did this entire assignment without looking as another .as file for reference which felt cool. Looking forward to applying it to the hangman assignment in one neat package, now we can dive into design and imagination 🙂 Here’s a link to my .swf file of this assignment.

Homepwner?

This week I finally got my madlib to work on multiple views! It’s a beautiful miracle of science. Triumph of triumphs. Segues are the coolest. So cool, in fact, that I made two of them.

After that I started working through chapter 9 in BNRG: iOS Programming, starting the Homepwner application that the book builds on for the following nine chapters. My goal here was to try to work through these chapters and build their application, but attempt to use storyboards rather than manually coding every piece. That makes more sense in theory than implementation, however.

I got about halfway through the chapter and I’m facing error messages that I don’t really understand, and I don’t know if I totally fathom what Xcode does for me when I use storyboards and how that does/doesn’t complicate the code that the book gives me. At this point I want to reconsider the usefulness of this approach, perhaps coming up with my own idea of an app to build (like the madlib) that does some of the same things that theirs eventually will, and creating it without following their steps precisely. I know there is value in the minutiae of the chapter but I also feel like I learned a lot more about Xcode through the messy trial-and-error of the madlib project.

I still don’t know how much I’m learning about Objective-C on the purely coding side, but it’s a work in progress. All of my other classes at this point are starting to assign our final projects/papers/assignments/death-knells so I think whatever project I come up with next should be the final output of this Independent Study, something with a clear end goal that I can get started on as soon as possible.

Concept Chunks

Really that’s the best title anything could ever have. Just finished the Concept Chunks assignment, aka the “never ending buttons” assignment. I keep forgetting that my vintage, trendy version of Flash doesn’t support CS6 files so the helpful .fla on TLEARN with all of the built-in symbols didn’t do much for me. I’m getting really good at making buttons though. Here‘s my awesome button-y masterpiece!

This assignment was pretty straightforward and easy, although tedious. Altogether it took me about 2 hours. Each little function had its difficulties, just speed bumps really. The most helpful revelation was that all of these string methods don’t alter the original string, so one must re-assign the variable with each method. Once I figured that out, everything was cake.

I have one question: what is the benefit of having a specific name for your events other than “event”? I imagine it has significance for more complicated programs, but within this simple structure it seemed superfluous to go back and rename all of my functions after I’d created them, so I just left it as “event,” and everything is working fine. So I’m just curious.

Also, this gem: “I’m a cat and couldn’t help wondering what it would be like, being burned alive all along your nerves.” I think it’s weird and dark enough, Sylvia would approve of this addition.