|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On December 24 2013 09:21 RoyGBiv_13 wrote:Show nested quote +On December 23 2013 23:50 darkness wrote: [Java] Is it a good idea to have an interface of a class that has a lot of methods just to show some overview of functionalities? E.g. simply treating the interface as a Class.h file. There have been plenty of opinions posted above. You've obviously opened up a can of worms. I, for one, love the C-style header way of collecting function prototypes, but often my C structures are designed as differently as night and day compared to java objects. I'd probably hate to reference someone else's java class using it's interface. In Java, while debugging or coding, you frequently reference the API and javadocs. Thus, when organizing your code for other people to use, try to make it fit within the same work flow that they already used. This is a key feature of successful projects. If you know someone else will reference your class, do all the work of understanding the class for them, and write it up in javadoc format. If you don't it will take more time overall for them to read through your code and figure out what to do, what the arguments mean, etc. If you just want to make a quick reference for yourself, I love using the Interface feature as a virtual to-do list. I leave it in my project at the end for completion sake, so a lot of my projects have this C-style header interface. It's your code, though, and you can make your own decision how to document it. EDIT: Low Level/ OS developer here
Instead of that you could use TDD and write tests for each method, its basically exactly the same.
The only difference is, with interfaces you are kind of screwing with the code-base (there are interfaces where there shouldn't be), but with tests it won't affect your code-base.
In code avoid doing anything unless it makes the code simpler or better. If you are just using features for not their intended purposes you are turning your code into a pillar of pain in the long term.
|
|
|
anyone using drupal cms here? @.@
|
|
|
It is MVC. 
MouseHandler = Controller Frame/Components = View Players/Variables = Models
That leepoint link is a really bad example of MVC IMO. Its overly complicated and obtuse and not well implemented.
Always be careful about giving "blanket" suggestions like this, IMO a tictactoe game does not need MVC to make it better. In many ways it would make it more complex than it needs to be.
|
Mine is MVC, right?
Model = the data, which is my game array and variables.
View = paint*() which are all separate from the controlling logic.
Control = controlling logic, such as AI, and player choice.
In my case I can change the AI code as I want, and the view and model will automatically be able to handle that as long as I keep the interface the same. I can change the view, and as long as the interface is the same it will handle it. Etc.
But thank you for the suggestion! This last semester I have been learning about the architecture/paradigms and that was one I've used before, but this time I didn't really think about it. It was just supposed to be as modifiable as I could make it.
|
On December 25 2013 16:09 WarSame wrote:Finished my Tic Tac Toe game. In the end, it is composed of a JFrame with 3 JPanels. Feel free to comment on any code, in particular the AI. https://github.com/WarSame/TicTacToeGraeme
erm sorry but how do i run it? I need a java compiler? like Visual basic for c?
|
I think you do. If you have a Java IDE like Eclipse you can run it in there for sure.
EDIT: For some reason when I exported it as a JAR it won't run, so I can't really do that for you.
|
Ok, I added an executable JAR to the GitHub repo. Feel free to check that out. You can run the JAR without having to install any programs.
|
On December 25 2013 20:27 sluggaslamoo wrote:It is MVC.  MouseHandler = Controller Frame/Components = View Players/Variables = Models That leepoint link is a really bad example of MVC IMO. Its overly complicated and obtuse and not well implemented. Always be careful about giving "blanket" suggestions like this, IMO a tictactoe game does not need MVC to make it better. In many ways it would make it more complex than it needs to be.
Well, I'm used to a different style of MVC. E.g. a separate class for each of M-V-C. It's possible I didn't understand design though. 
Edit: It doesn't look like this in my opinion: http://leepoint.net/notes-java/GUI/structure/40mvc.html
|
Finished my (first) holiday mini-project! A machine learning decision tree (http://en.wikipedia.org/wiki/Decision_tree). Though it is very limited. It only handles discrete-type attributes. Also, while I have some tests I wouldn't be surprised to learn about bugs.
I'm going to clean up the page about but anyone interested in artificial intelligene, feel free to check it out (needs java, scala and simple build tool): https://github.com/MikaelUmaN/DecisionTree
|
On December 26 2013 03:46 WarSame wrote: Ok, I added an executable JAR to the GitHub repo. Feel free to check that out. You can run the JAR without having to install any programs.
Tried it out, is it supposed to let the player win most of the time? Edit: Played more games, seems like it manages to tie about 15% of the time. I guess it's pretty much random where the AI puts it unless you or the AI have 2 in a row?
Edit2: I looked closer at your code, it does indeed seem like it randomizes where to put it unless there is two in a row for either the AI or the Player. This makes going first move corner the best with about a 91.67% (11/12) winrate if my math is correct. (if the AI doesn't go center first move you always win, if the AI goes center you put it on the opposite corner to where you first move and you win if the AI goes to any of the two remaining corners.)
So unless you want it to lose most of the time I suppose you have to add in more checks.
|
Yeah, the AI is not that strong. I figured since it's Tic Tac Toe... if it was strong you'd just tie all the time. The Tic Tac Toe game was designed to be extensible(i.e. 3x3, 4x4, 5x5...). The best method of implementing the AI is to have "win if you can", then "don't lose if you can" then "calculate the end results of every move and pick the one that has the best winning chance". However, that's really processing heavy and I didn't want to code it haha. So instead it just uses the random guess for the last one.
EDIT: Darkness, you're right, I think. But they are separate methods at least, so in this case hopefully that's enough.
|
3x3 Tic-Tac-Toe is solved, check out Wikipedia if you want the algorithm. I implemented it before and it's pretty simple/naive. I believe with an arbitrary sized TTT board it's simple to force draws at the very least. They're all interesting AI expansions that I would suggest you take a stab at (great to talk about and really cool learning exp.)
|
On December 27 2013 02:34 WarSame wrote: Yeah, the AI is not that strong. I figured since it's Tic Tac Toe... if it was strong you'd just tie all the time. The Tic Tac Toe game was designed to be extensible(i.e. 3x3, 4x4, 5x5...). The best method of implementing the AI is to have "win if you can", then "don't lose if you can" then "calculate the end results of every move and pick the one that has the best winning chance". However, that's really processing heavy and I didn't want to code it haha. So instead it just uses the random guess for the last one.
EDIT: Darkness, you're right, I think. But they are separate methods at least, so in this case hopefully that's enough.
On December 26 2013 01:29 WarSame wrote: Mine is MVC, right?
Model = the data, which is my game array and variables.
View = paint*() which are all separate from the controlling logic.
Control = controlling logic, such as AI, and player choice.
In my case I can change the AI code as I want, and the view and model will automatically be able to handle that as long as I keep the interface the same. I can change the view, and as long as the interface is the same it will handle it. Etc.
But thank you for the suggestion! This last semester I have been learning about the architecture/paradigms and that was one I've used before, but this time I didn't really think about it. It was just supposed to be as modifiable as I could make it.
A controller is more of an interface, think of it like a game controller. It converts human readable inputs into something the program can understand.
Your code definitely lacks basics but its not MVC that needs to be looked into but rather its a lot more basic than that. 
Have a look into functional decomposition and abstraction.
Each method should only do one thing, and named for doing that one thing, and your main function should read somewhat like a story. MVC moves towards responsibility driven design, but this sort of methodology is just adding a layer of complication that will make it impossible until you understand the basics of structured (non-OO) programming.
The code could definitely be written 100x better, but good job nevertheless. Finishing is always the hardest part IMO.
|
What is the 100x better? I went through my original code and improved it a lot based off of his comments, so could you do the same thing? There was nothing that struck me as obviously bad, so there's really nothing left for me to catch for myself.
Anyway... the sad thing is I'm in 3rd year Software Engineering. Finally starting to actually use my free time to program.
|
Hi All
I'm new here 
And i have been working on this little application for about a week now.
It started out to be for myself and my friends because i couldn't find anything like it elsewhere. But now i have decided to share it 
It's a Windows Form Application in C# that will only use your Twitch.tv username and notify you when a channel you are following on Twitch.tv comes Live.
See more here: https://github.com/WhyN92/WhyNsStreamWatcher
I have no idea if this have been created before, but here it is  Feedback is appreciated, and this is my first time making something public and using GitHub.
Whyn
|
I cant imagine many people wanting to put there name/pass into a app from a user with 1 post. Besides that, twitch.tv does that for you anyway with texts/emails via its settings.
|
You only type your username in 
And for my experience is E-mails delayed and just a bit spamy sometimes.
|
Whyn, your app seems like a cool idea. Thanks for making it!
|
|
|
|
|
|