4/28/19
At this point I have finally finished up the Import functionality that I mentioned in my previous post, and despite some network issues and hang-ups, things seem to work well. All functionality is here and all of the requirements have been met. There are a couple of interesting bugs that are quite hard to detect when creating games at times, but 98% of the time, everything works fine. Dr. McVey worked with me and came upon a solution for the words being cut off on the main game screen. We no longer have cut off words! Saving and resuming games words quite well, but I have seen a bug that I have not been able to reproduce successfully yet. I am still working on finding this. Sometimes the saved game board is changed, but it highlights where the words were in the previous game, essentially highlighting junk. Again, most of the time this works well, but at times it doesn't. We are coming up on the end here. I have given my presentation and demonstration, and I feel that it went pretty well. Obviously there are always places to improve, but I am happy with my performance.
here is a link to a video of the app in action… https://drive.google.com/file/d/131hmWY48I0aAMKfm7vIqjM0fr0aPFYmo/view?usp=sharing
At this point I have finally finished up the Import functionality that I mentioned in my previous post, and despite some network issues and hang-ups, things seem to work well. All functionality is here and all of the requirements have been met. There are a couple of interesting bugs that are quite hard to detect when creating games at times, but 98% of the time, everything works fine. Dr. McVey worked with me and came upon a solution for the words being cut off on the main game screen. We no longer have cut off words! Saving and resuming games words quite well, but I have seen a bug that I have not been able to reproduce successfully yet. I am still working on finding this. Sometimes the saved game board is changed, but it highlights where the words were in the previous game, essentially highlighting junk. Again, most of the time this works well, but at times it doesn't. We are coming up on the end here. I have given my presentation and demonstration, and I feel that it went pretty well. Obviously there are always places to improve, but I am happy with my performance.
here is a link to a video of the app in action… https://drive.google.com/file/d/131hmWY48I0aAMKfm7vIqjM0fr0aPFYmo/view?usp=sharing
This is about what I am going for.
Quick Update |
4/14/19
We are nearing the end of the semester, and the end of this project. Since last time I have not quite figured out the pulling of words from a server to use in the application, but I have made some other progress... I have almost finished the ability to restart a game that has been saved. I have a few buts left to work out, but it is nearly complete. When you click the resume button on the home screen it takes the saved data and regenerates the game board you had previously. I am just working out the re-highlighting of the words that were already selected. Also, the ability to use hints has seen progress. When you click the hint button, it will highlight the first letter of a word that you have not yet selected. This feature does work relatively well at this point, but I am just finishing up figuring out how I am tracking the hints that are given. One issue I am seeing is that sometimes it will highlight the same hint location more than once, which wastes one of your hints. After I finish up these two parts, and pull words from a server, the project should be complete with all requirements met! Note: I will be removing the create account and sign in buttons since having a personal account for an app doesn't seem to add much value. 4/7/19
As I mentioned in my previous post, my next task was to import libraries of words from a server. I have not yet completed that task, thought I have an Idea in mind. Last week I didn't have much time to work on the project due to some other responsibilities. As of recently, though, I was able to add another significant update. I have implemented a "Save Game" button, and a "Resume Game" button. The save game button takes a list of the words originally used to create the game, the words that are left after having found some, and then the game board itself, and puts those into a text file. I had to learn how to save to a local file on the phone, and all of the data gets stored there, so it persists even if the app is closed. The file, as I have learned, is only accessible from within the application, unless you have root access to the directories. While playing the game you are able to press the "Save Game" button, and it saves the data to the file, overwriting what was saved there previously. Every time you save a game, you will be deleting the previous save, no matter who was using the app from last time. The "resume game" button is a little different. I am still working on the implementation, but for the most part it is pulling in data correctly. While on the home screen, when you press the "resume game" button, it will find the file that stores the game data, create a stream, and pass it into the activity. From there I will be able to parse the strings and re-create the objects needed to resume a game. The re-highlighting of the words that have already found is something that I am still working on, but I have an idea in mind. Note: I still have a bug when trying to find the last word on the word search. I have not been able to find the cause of it yet. 3/23/19
Great progress has been made! Since last time I was able to create a whole new screen where you can create your own game. This has 10 text boxes that you are able to enter words into. It restricts you to making the words at least 3 characters long and can be no longer than 10 characters. I then learned that you are able to pass data from one activity to another. What I did was push all the strings, after validation, into an array. Then, I take that array and use a bundle and an intent to store and pass the array of strings to another activity on startup. I am then able to use the same code and screen as what you see in my previous post, but with the words that the user entered. I have quick games and user created games complete! The next step will be figuring out how to import libraries of words from a server. I will have to learn how to request a list of libraries, and then the user can select one and it will fetch all of the words for the one selected. Side note: I still haven't been able to figure out how to stop the letters from getting cut off on the game screen. I also have an interesting bug that I can't seem to fix... The bug is seen when trying to select the last word in the list of game words. For some reason the coordinates aren't being created correctly when I store them. That will be an important next step to moving forward. 3/10/19
So, since last time I have come up with a plan and executed relatively well. Though after some discussion with Dr. McVey, it does look to be a little inefficient, I have managed to calculate all of the highlights on the board that are required to cover a word. When a user clicks on the beginning and end of a word that is stored, whether is is backwards or forwards, it is then sent to a method that changes the 2D array coordinates into 1D array positions. It then tracks the letters through the array, no matter the direction, and returns all positions associated with a word. When those positions are sent back up, a loop takes them and highlights those positions, showing the word that was found. This did take some time and a whole lot of debugging to get right, but I think it is working well at the moment. The next step, that I am almost finished with is the removal of the word from the word list in the bottom left. My next task is to figure out when the word list is empty and the game has been won. This will also contribute to the hint calculator. Once I have those items completed, it will be time to move on to the easy stuff! Before I mention the easy stuff, I need to make it known that I am still working on fixing the cut-off letters on the grid. Due to my lack of knowledge on XML and Android, I still haven't managed to make the letters whole yet. I will make an update as soon an I figure it out! 3/3/19
Some decent progress is being made, though as I get farther into this, I realize how much I still have to do. Again, the hardest part of this project is learning all of the features of Android from no knowledge. I can get the Java just fine, but the front end work is the stuff that takes forever to learn. As you can see in this image, I was able to highlight letters as they are touched. I have implemented new data objects that hold the start and end coordinates of the words, and the words themselves. Now that I can capture the coordinates on the grid, and I have the coordinates on the backend, I should be able to discover words by tapping the correct coordinates. That will be the easy part... The harder part will be figuring out how to highlight all of the letters that are between the touchpoints. Once I have that done, I should be able to dynamically generate and update the hint counter and remove words from the word list as they are found. I am very close. Looking a little farther into the future, I will have to figure out how the hint button will create hints. I'm thinking of grabbing a start or end coordinate from the list of words and their start/ends and highlighting it so that the player can use that for a hint. After I figure out all of those things, the game generation should be about 100% complete! The steps after that should be quite a bit easier. Tackling the game generation and all other interfaces is definitely the hardest part, so I am looking forward to finally overcoming this obstacle. 2.27.19
So there has been some decent progress since my last update. Currently, I have the home screen mostly made up, minus the artwork that will be there (left). On the right we have an image of the Quick Game screen. I have the grid displaying quite well, and it is receptive to touch. I have on the bottom left of the Quick Game screen a scrolling list of words that are in the grid. Next to that, to the right, I have a button for giving hints. Hints will be something earned by successfully winning games, but I have not created the full functionality yet. Above that button, I have the counter for the number of hints remaining. I have not figured out how to get successful touch coordinates yet, as this is becoming trickier than I anticipated. The next steps here are calculating touch coordinates and giving full functionality to the hint button and the hint counter. 2.23.19
At this point physical progress on the project has been slow. I have spent many days trying to find out the best way to display all of the words from the grid that I have created. I have decided to use the Grid View template, though I do not know yet if that is going to be my best option. I was able to pass my two dimensional array, that is a game, and place it in a single dimensional array. The Grid View is able to take the single dimensional array and display it in a grid format with rows and columns. I have not figured out how to make this dynamic, though I am able to display all of the letters correctly so far in a 10x10 grid. My next step will be to try and make this dynamic to display different sized grids. After that, I will implement the touch functionality that allows one to select words from off of the grid. 2.18.19 - Crisis Averted
Despite losing all of my previous project, I was able to save a couple files worth of code in some text files... Using that, I was able to start again with a small head start. After sitting down and re-writing, it only took about 6 hours to get myself back to where I was when I lost everything. I did make some progress from there then. I wrote all of the algorithm to generate word searches. This works by randomly selecting locations in a 2 dimensional array, then using a switch-case statement, updating the next letter location. This iterated through the word for each letter, finding the next location. The switch-case directions are based on a direction that is selected before each letter is tried. Each word is attempted to be places 500 times before it is determined to not fit in the puzzle and is left out of the final set of words. My next step is a graphical, front-end representation of this word search. 2.17.19 - REAL BAD NEWS
I'm not totally sure what has happened.... While debugging and testing my project, I ran into a major problem. Some IDE error with Android Studio caused major corruption with my files. Something with a Groovy sdk and Gradle.... I searched the error messages and submitted error reports, but I could not find a fix. I tried disabling some features, but nothing worked. Quickly before anything else happened to my files, I copied some of my major files and saved them into text files, but the majority of my files were corrupt or gone. I will have to start another Android Studio project. I was not able to fix the the problem with my IDE, so I uninstalled it completely and did a reinstall. I plan on recovering from this, but I will have to refactor everything, because I don't have my old project to reference. Hopefully the most important parts of my code that I copied saves me a bunch of time.... other than that, I did have most of my algorithm to generate a word search complete, I just had some testing to get through. 2.13.19
I am currently stuck working on this algorithm. I tried slicing it up into smaller parts, but because of my lack of understanding of Java, I dug myself into a hole. I am keeping the modular design, but I am refactoring my code so it is easier to read and actually works. Update on the workings of the word placement algorithm coming soon 2.10.19
Over the last few days I have been working on what seems to be the most difficult part of this project. The creating of the algorithm that will successfully place the words on the word search grid with no doubt be the most important task of this project. I did meet with Dr. McVey to discuss the execution of this task and we talked about some of the best ways in which to go about it. I have had to continue on my trek to learn to use Java and Android Studio, but I am slowly becoming more familiar with the implications of each. Earlier in the week, before I met to discuss this algorithm, I did create the Gantt chart that you see above. This is use to formally track the amount of time within a timeline that is spent on certain tasks, and I will continue to update this over the course of the semester. 2.4.19
This week I did not get a ton accomplished with my capstone. Work was busy and the snow/cold days really threw me for a loop. Here and there I covered general coding techniques and best practices videos, as it is a hobby of mine to look into things like that. I have started my thinking about the route I'm going to take and the data structures I'm going to use for creating the grids for my word searches. I have decided that a two dimensional array will be the most logical option for a layout. It will be easy to manipulate with Java and its libraries. I also think creating a visually pleasing user interface will be easier when using something like this. I have also decided that using string arrays will be beneficial as I think the string libraries in Java will also be quite useful to me. As I said in my previous post, I need to get the words on the grid. I thought I would have that figured out by now, but the more I think about it, the more daunting it becomes.... vertical and horizontal words are not what I am worried about, but it is the diagonal ones that are going to be quite a challenge. 1.29.20191.27.2019
I have learned how to create new activities in Android Studio. What I have done is create new activities for Quick Game, Create Game, Import and Settings. All of these buttons and their respected activities will have their own distinct function. - Next step is to get the words on a grid. 1.27.2019Since this is an Android app, I need Android Studio and be able to develop a UI with XML and a backend with Java. These are 2 languages that I have no experience with at all, as well as never having been exposed to Android Studio either. I did consider using Xamarin to develop cross-platform apps in XML and C#, but I was having tons of trouble with the downloads and extensions. My first videos included how to start different "activities" with buttons on the user interface.
1.24.2019Preliminary drawings and initial ideas. Trying to keep it simple, but very scalable. This is just user interface, as I have not much technical thinking at this point. Ideas are listed and parameters and known. I have considered the data structures that I will need/want to use, but I don't think that I will need many.
- Conclusion: First steps will include getting to know Android Studio, as that is where most development will be happening. |