• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 20:29
CEST 02:29
KST 09:29
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Team Liquid Map Contest #22 - The Finalists8[ASL21] Ro16 Preview Pt1: Fresh Flow9[ASL21] Ro24 Preview Pt2: News Flash10[ASL21] Ro24 Preview Pt1: New Chaos0Team Liquid Map Contest #22 - Presented by Monster Energy21
Community News
2026 GSL Season 1 Qualifiers5Maestros of the Game 2 announced22026 GSL Tour plans announced3Weekly Cups (April 6-12): herO doubles, "Villains" prevail0MaNa leaves Team Liquid18
StarCraft 2
General
Team Liquid Map Contest #22 - The Finalists 2026 GSL Tour plans announced Maestros of the Game 2 announced Weekly Cups (April 6-12): herO doubles, "Villains" prevail MaNa leaves Team Liquid
Tourneys
2026 GSL Season 1 Qualifiers Master Swan Open (Global Bronze-Master 2) SEL Doubles (SC Evo Bimonthly) Sparkling Tuna Cup - Weekly Open Tournament $5,000 WardiTV TLMC tournament - Presented by Monster Energy
Strategy
Custom Maps
[D]RTS in all its shapes and glory <3 [A] Nemrods 1/4 players [M] (2) Frigid Storage
External Content
Mutation # 521 Memorable Boss The PondCast: SC2 News & Results Mutation # 520 Moving Fees Mutation # 519 Inner Power
Brood War
General
ASL21 General Discussion BGH Auto Balance -> http://bghmmr.eu/ Data needed A cwal.gg Extension - Easily keep track of anyone [ASL21] Ro16 Preview Pt1: Fresh Flow
Tourneys
[ASL21] Ro16 Group B [ASL21] Ro16 Group A [ASL21] Ro24 Group F [Megathread] Daily Proleagues
Strategy
What's the deal with APM & what's its true value Any training maps people recommend? Fighting Spirit mining rates Muta micro map competition
Other Games
General Games
Nintendo Switch Thread Battle Aces/David Kim RTS Megathread Stormgate/Frost Giant Megathread General RTS Discussion Thread Starcraft Tabletop Miniature Game
Dota 2
The Story of Wings Gaming Official 'what is Dota anymore' discussion
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread Things Aren’t Peaceful in Palestine Canadian Politics Mega-thread Russo-Ukrainian War Thread European Politico-economics QA Mega-thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Req][Books] Good Fantasy/SciFi books [Manga] One Piece Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion Cricket [SPORT] Tokyo Olympics 2021 Thread
World Cup 2022
Tech Support
[G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Reappraising The Situation T…
TrAiDoS
lurker extra damage testi…
StaticNine
Broowar part 2
qwaykee
Funny Nicknames
LUCKY_NOOB
Iranian anarchists: organize…
XenOsky
ASL S21 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 2548 users

The Big Programming Thread - Page 127

Forum Index > General Forum
Post a Reply
Prev 1 125 126 127 128 129 1032 Next
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.
Manit0u
Profile Blog Joined August 2004
Poland17722 Posts
Last Edited: 2012-03-15 14:29:23
March 15 2012 14:26 GMT
#2521
On March 15 2012 21:34 sluggaslamoo wrote:
Show nested quote +
On March 15 2012 21:22 Manit0u wrote:
On March 15 2012 20:59 lolmlg wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.

If you plan to avoid get and set methods then you'll be avoiding a standard so far-reaching that it is done automatically by many IDEs. People avoid it when the length of their class makes them upset. I can't think of another good reason.

As for extends there are some languages in which inheritance of that kind no longer exists, but that does not mean it should be avoided.

On March 15 2012 20:51 fonger wrote:
On March 15 2012 20:47 mgj wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?

By doing that you're violating any number of abstraction principles and will probably wind up with UI code dependent on implementation.


Why getters, setters and extends are evil.

http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html


Or you could just combine all of these articles and put it under "Why Java is evil".

I've been seriously rofling at all these silly design patterns that java developers have created to get around the limitations of Java. "interfaces over implementation", "why extends is evil", etc, etc. Everyone trying to follow Dijkstra's style of 'goto statement considered harmful' yet failing because instead of coming up with a solution (Pascal) they just side-step the real issue.

I mean yes, I do implement Java in this way (no extends, lots of interfaces for flexibility), but not because its good, its because Java is bad. Trust me, I bought into this shit when I was in my teens, how naive I was.

Hence I pretty much wouldn't touch Java with a 10 foot pole. The only time I do is with JRuby, except its just Ruby translated to Java bytecode so I can use Java libraries.

The whole getter and setter issue can be much better explained with Responsibility Driven Design. Getters and setters aren't evil, don't be ridiculous, its just that writing getters and setter methods is a nonsensical abstraction and causes code bloat. Nothing does my head in more than seeing a class with attributes and then get() set() methods for everything, causing the class to be about 100x bigger than it needs to be. However there are some times where you will need to write a getter and setter.

Responsibility Driven Design teaches you how to name classes (or classifications) and methods, what methods mean, and how to properly abstract real business models into object oriented code, when to use extends, etc. It takes a long time to learn, but after a while it should click and a lot of the mysteries of OOP will start to make complete sense. Until then you are simply throwing darts with a blindfold on and listening to morons telling you why things are evil.


Oh well, there must've been a reason for me to stop doing anything in Java for years... But making a GUI for applications in C or C++ will be so much harder (I think, it's also been ages since I had to do with any GUIs).
Especially that I want the thing I'm working on now to be able to run on different platforms. Guess it's time to learn some wxWidgets.
Time is precious. Waste it wisely.
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
March 15 2012 14:42 GMT
#2522
On March 15 2012 23:26 Manit0u wrote:
Show nested quote +
On March 15 2012 21:34 sluggaslamoo wrote:
On March 15 2012 21:22 Manit0u wrote:
On March 15 2012 20:59 lolmlg wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.

If you plan to avoid get and set methods then you'll be avoiding a standard so far-reaching that it is done automatically by many IDEs. People avoid it when the length of their class makes them upset. I can't think of another good reason.

As for extends there are some languages in which inheritance of that kind no longer exists, but that does not mean it should be avoided.

On March 15 2012 20:51 fonger wrote:
On March 15 2012 20:47 mgj wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?

By doing that you're violating any number of abstraction principles and will probably wind up with UI code dependent on implementation.


Why getters, setters and extends are evil.

http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html


Or you could just combine all of these articles and put it under "Why Java is evil".

I've been seriously rofling at all these silly design patterns that java developers have created to get around the limitations of Java. "interfaces over implementation", "why extends is evil", etc, etc. Everyone trying to follow Dijkstra's style of 'goto statement considered harmful' yet failing because instead of coming up with a solution (Pascal) they just side-step the real issue.

I mean yes, I do implement Java in this way (no extends, lots of interfaces for flexibility), but not because its good, its because Java is bad. Trust me, I bought into this shit when I was in my teens, how naive I was.

Hence I pretty much wouldn't touch Java with a 10 foot pole. The only time I do is with JRuby, except its just Ruby translated to Java bytecode so I can use Java libraries.

The whole getter and setter issue can be much better explained with Responsibility Driven Design. Getters and setters aren't evil, don't be ridiculous, its just that writing getters and setter methods is a nonsensical abstraction and causes code bloat. Nothing does my head in more than seeing a class with attributes and then get() set() methods for everything, causing the class to be about 100x bigger than it needs to be. However there are some times where you will need to write a getter and setter.

Responsibility Driven Design teaches you how to name classes (or classifications) and methods, what methods mean, and how to properly abstract real business models into object oriented code, when to use extends, etc. It takes a long time to learn, but after a while it should click and a lot of the mysteries of OOP will start to make complete sense. Until then you are simply throwing darts with a blindfold on and listening to morons telling you why things are evil.


Oh well, there must've been a reason for me to stop doing anything in Java for years... But making a GUI for applications in C or C++ will be so much harder (I think, it's also been ages since I had to do with any GUIs).
Especially that I want the thing I'm working on now to be able to run on different platforms. Guess it's time to learn some wxWidgets.


Hmmm what to do with GUI's. Are you writing a desktop app, web app or a game?

Swing is very easy to create GUI's with, but its very slow and cumbersome to custom code. I've tried Swing and JRuby, terrible idea also.

If you are writing desktop apps you should really look at the new html on a desktop app movement. I haven't done much of it as I'm pretty much doing GUI's in OpenGL or on the web.

But as a Ruby dev I guess I have to recommend this. It allows you to use Ruby/Javascript/Html and write a desktop app.

http://bowlineapp.com/

Ruby is a great language too. :D

Appcelerator Titanium is a much more commercial version and allows you to even build native apps that do the same thing (Ruby/Html/JS). They had a free indie license last time I tried it.

http://www.appcelerator.com/
http://developer.appcelerator.com/doc/desktop/ruby

And for the love of god please don't use PhoneGap, its terrible.

Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
Manit0u
Profile Blog Joined August 2004
Poland17722 Posts
March 15 2012 15:07 GMT
#2523
I'm writing a 2D game...
Time is precious. Waste it wisely.
heroyi
Profile Blog Joined March 2009
United States1064 Posts
Last Edited: 2012-03-15 15:08:46
March 15 2012 15:08 GMT
#2524
printf("\n\n");
printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);


I can't do this...I have been trying to look up for help but i cant find it (been trying for 2 days so maybe someone else can help me).

side note: I am still new to this and learning c++. I know some stuff (like functions, loops, arrays etc...) xD

Anyway I am trying to create a tic tac toe with visual c++ but I need help creating the board and trying to write something that would help tell the computer to put an "x" or an "o" at w.e square space the user wants to do AND show/re-draw the updated board with the new move. I have tried various things but i don't understand it (attempting to use 2d array mind you)...

^^I dont understand this code. I have studied the code for awhile but considering its C language there are somethings in there i dont understand (like how the person is able to printf the board and yet somehow associate the board space to a specific array coordinate). I dont need help on how to figure out the winner or getting the input from the player. I was wondering if someone could show me/help me figure out how to create and initialize the board (I would also like an explanation behind the mechanic/process).


I got the code from here: http://www.dreamincode.net/forums/topic/135129-the-tic-tac-toe-program/

tl;dr
I need help creating the tic tac toe board and find out how to mark the user specific point with an "X" or an "O". (I have tried asking the user to put in an x,y coordinate point and use that to mark the spot on the board but again that doesnt work)
wat wat in my pants
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
March 15 2012 15:20 GMT
#2525
im trying to make a sequence diagram but i got one problem

i have 4 actors, namely attendant, cashier, supervisor and manager. there are some functions that are limited only to a specific position, now my what happens if i have a action/function weyhere they all can use/access it? do i make a more general actor like employee?
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
Manit0u
Profile Blog Joined August 2004
Poland17722 Posts
Last Edited: 2012-03-15 15:54:55
March 15 2012 15:43 GMT
#2526
On March 16 2012 00:08 heroyi wrote:
printf("\n\n");
printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);


I can't do this...I have been trying to look up for help but i cant find it (been trying for 2 days so maybe someone else can help me).

side note: I am still new to this and learning c++. I know some stuff (like functions, loops, arrays etc...) xD

Anyway I am trying to create a tic tac toe with visual c++ but I need help creating the board and trying to write something that would help tell the computer to put an "x" or an "o" at w.e square space the user wants to do AND show/re-draw the updated board with the new move. I have tried various things but i don't understand it (attempting to use 2d array mind you)...

^^I dont understand this code. I have studied the code for awhile but considering its C language there are somethings in there i dont understand (like how the person is able to printf the board and yet somehow associate the board space to a specific array coordinate). I dont need help on how to figure out the winner or getting the input from the player. I was wondering if someone could show me/help me figure out how to create and initialize the board (I would also like an explanation behind the mechanic/process).


I got the code from here: http://www.dreamincode.net/forums/topic/135129-the-tic-tac-toe-program/

tl;dr
I need help creating the tic tac toe board and find out how to mark the user specific point with an "X" or an "O". (I have tried asking the user to put in an x,y coordinate point and use that to mark the spot on the board but again that doesnt work)


You want the simplest, but a bit ugly, solution?

Store board rows as variables, then, depending on the move, just clear screen and display the board again using desired variables.
This is going to be ugly because you'll have to make variables for all possible positions and then store useless data.

Example:
string rowdefault = "---|---|---";
string rowxnn = "X|---|---";
string rowxno = "X|---|O";

There's what, 11-12 possible row combinations?

It's pretty simple. When a player makes a move you just set activeRow1 = rowxnn for example and then just print activeRow1 \n ActiveRow2 \n ActiveRow3 \n

Edit:
What the code you pointed to does is enter a loop and asking people to enter their field of choice. Then, while the loop is running it assigns X or O (depending on a player) to a specific location in the array and displays it.
This: printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
means: print first item in third array dimension, second item in third..., ...
If that's what you're wondering...

The board in this 3d array looks like that:
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
Time is precious. Waste it wisely.
MisterD
Profile Blog Joined June 2010
Germany1338 Posts
Last Edited: 2012-03-15 15:48:14
March 15 2012 15:47 GMT
#2527
a sequence diagram displays an actual execution sequence of method calls, it doesn't provide any information on who *can* access what, only on what method invocation *does* lead to what other method invocations. Shamelessly googled and hotlinked example image:
[image loading]

what kind of diagram are you really trying to make?
Gold isn't everything in life... you need wood, too!
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
March 15 2012 15:58 GMT
#2528
On March 16 2012 00:47 MisterD wrote:
a sequence diagram displays an actual execution sequence of method calls, it doesn't provide any information on who *can* access what, only on what method invocation *does* lead to what other method invocations. Shamelessly googled and hotlinked example image:
[image loading]

what kind of diagram are you really trying to make?


well there is some methods which are limited to the manager only, how can i show that in the diagram? make an actor Manager?

what kind of diagram? sequence diagram :x. lol i dont get the question D:
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
MisterD
Profile Blog Joined June 2010
Germany1338 Posts
March 15 2012 16:40 GMT
#2529
in a sequence diagram, who *can* call what is completely irrelevant, you can't display it. That's just my point. You display a sequence of method calls the in the order in which they occur during a your programs execution, you do not display who could have called what. If you want to display a list of methods for every class including the visibility information of these methods, you need a class diagram. Again shamelessly googled and hotlinked example image:
[image loading]

That's why i asked what kind of diagram you actually want to draw. If you want to visualize class members and their visibility (and composition), you want to make a class diagram, not a sequence diagram.
Gold isn't everything in life... you need wood, too!
icystorage
Profile Blog Joined November 2008
Jollibee19350 Posts
March 15 2012 16:41 GMT
#2530
On March 16 2012 01:40 MisterD wrote:
in a sequence diagram, who *can* call what is completely irrelevant, you can't display it. That's just my point. You display a sequence of method calls the in the order in which they occur during a your programs execution, you do not display who could have called what. If you want to display a list of methods for every class including the visibility information of these methods, you need a class diagram. Again shamelessly googled and hotlinked example image:
[image loading]

That's why i asked what kind of diagram you actually want to draw. If you want to visualize class members and their visibility (and composition), you want to make a class diagram, not a sequence diagram.


okay i get it now thank you very much good sir and thank you for being patient with me!
LiquidDota StaffAre you ready for a Miracle-? We are! The International 2017 Champions!
nyxnyxnyx
Profile Joined April 2010
Indonesia2978 Posts
March 15 2012 16:47 GMT
#2531
I'm really struggling with Java atm (Year 2 college) and would really appreciate guidance from a mentor good at it. Will even compensate in any way possible. Please do PM me if you feel you are up to the task, thank you!!
cool beans
heroyi
Profile Blog Joined March 2009
United States1064 Posts
Last Edited: 2012-03-15 18:33:22
March 15 2012 18:28 GMT
#2532
On March 16 2012 00:43 Manit0u wrote:
Show nested quote +
On March 16 2012 00:08 heroyi wrote:
printf("\n\n");
printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);


I can't do this...I have been trying to look up for help but i cant find it (been trying for 2 days so maybe someone else can help me).

side note: I am still new to this and learning c++. I know some stuff (like functions, loops, arrays etc...) xD

Anyway I am trying to create a tic tac toe with visual c++ but I need help creating the board and trying to write something that would help tell the computer to put an "x" or an "o" at w.e square space the user wants to do AND show/re-draw the updated board with the new move. I have tried various things but i don't understand it (attempting to use 2d array mind you)...

^^I dont understand this code. I have studied the code for awhile but considering its C language there are somethings in there i dont understand (like how the person is able to printf the board and yet somehow associate the board space to a specific array coordinate). I dont need help on how to figure out the winner or getting the input from the player. I was wondering if someone could show me/help me figure out how to create and initialize the board (I would also like an explanation behind the mechanic/process).


I got the code from here: http://www.dreamincode.net/forums/topic/135129-the-tic-tac-toe-program/

tl;dr
I need help creating the tic tac toe board and find out how to mark the user specific point with an "X" or an "O". (I have tried asking the user to put in an x,y coordinate point and use that to mark the spot on the board but again that doesnt work)


You want the simplest, but a bit ugly, solution?

Store board rows as variables, then, depending on the move, just clear screen and display the board again using desired variables.
This is going to be ugly because you'll have to make variables for all possible positions and then store useless data.

Example:
string rowdefault = "---|---|---";
string rowxnn = "X|---|---";
string rowxno = "X|---|O";

There's what, 11-12 possible row combinations?

It's pretty simple. When a player makes a move you just set activeRow1 = rowxnn for example and then just print activeRow1 \n ActiveRow2 \n ActiveRow3 \n

Edit:
What the code you pointed to does is enter a loop and asking people to enter their field of choice. Then, while the loop is running it assigns X or O (depending on a player) to a specific location in the array and displays it.
This: printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
means: print first item in third array dimension, second item in third..., ...
If that's what you're wondering...

The board in this 3d array looks like that:
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]

thanks for the help.

I actually prefer not to use your solution (it is viable and I will resort to it if I cannot find alternatives) since that is quite "ugly."
Is there a way to make it work by trying to setup a x,y coordinate system and mark the spot based on the user input? For example:

I would display the board out like this:
int tictacboard[3][3] =
{0,1,2},
{3,4,5},
{6,7,8};
cout << " " << tictacboard[][]

however knowing when creating an array, the cells are arranged as so (because its a 3x3 2d array):
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
thus i want the array read as tictacboard[x][y] //(<--- want as x,y system)

ask user to choose number to mark the spot( say he chose "4"):


tictacboard[1][1] = 'X'
cout << tictacboard

now when it is player's turn it will show:
{0,1,2}
{3,X,5}
{6,7,8}

if player has chosen spaces 0,4,8 to mark the compiler would read this as:
tictacboard[0][0] = 'X'
tictacboard[1][1] = 'X'
tictacboard[2][2] = 'X'
thus showing:
{X,1,2}
{3,X,5}
{6,7,X}


^^or something similar
possible?help?AIUTO
wat wat in my pants
uNiGNoRe
Profile Blog Joined June 2007
Germany1115 Posts
Last Edited: 2012-03-15 23:39:26
March 15 2012 23:38 GMT
#2533
On March 16 2012 03:28 heroyi wrote:
+ Show Spoiler +
On March 16 2012 00:43 Manit0u wrote:
Show nested quote +
On March 16 2012 00:08 heroyi wrote:
printf("\n\n");
printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
printf("---|---|---\n");
printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);


I can't do this...I have been trying to look up for help but i cant find it (been trying for 2 days so maybe someone else can help me).

side note: I am still new to this and learning c++. I know some stuff (like functions, loops, arrays etc...) xD

Anyway I am trying to create a tic tac toe with visual c++ but I need help creating the board and trying to write something that would help tell the computer to put an "x" or an "o" at w.e square space the user wants to do AND show/re-draw the updated board with the new move. I have tried various things but i don't understand it (attempting to use 2d array mind you)...

^^I dont understand this code. I have studied the code for awhile but considering its C language there are somethings in there i dont understand (like how the person is able to printf the board and yet somehow associate the board space to a specific array coordinate). I dont need help on how to figure out the winner or getting the input from the player. I was wondering if someone could show me/help me figure out how to create and initialize the board (I would also like an explanation behind the mechanic/process).


I got the code from here: http://www.dreamincode.net/forums/topic/135129-the-tic-tac-toe-program/

tl;dr
I need help creating the tic tac toe board and find out how to mark the user specific point with an "X" or an "O". (I have tried asking the user to put in an x,y coordinate point and use that to mark the spot on the board but again that doesnt work)


You want the simplest, but a bit ugly, solution?

Store board rows as variables, then, depending on the move, just clear screen and display the board again using desired variables.
This is going to be ugly because you'll have to make variables for all possible positions and then store useless data.

Example:
string rowdefault = "---|---|---";
string rowxnn = "X|---|---";
string rowxno = "X|---|O";

There's what, 11-12 possible row combinations?

It's pretty simple. When a player makes a move you just set activeRow1 = rowxnn for example and then just print activeRow1 \n ActiveRow2 \n ActiveRow3 \n

Edit:
What the code you pointed to does is enter a loop and asking people to enter their field of choice. Then, while the loop is running it assigns X or O (depending on a player) to a specific location in the array and displays it.
This: printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
means: print first item in third array dimension, second item in third..., ...
If that's what you're wondering...

The board in this 3d array looks like that:
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]

thanks for the help.

I actually prefer not to use your solution (it is viable and I will resort to it if I cannot find alternatives) since that is quite "ugly."
Is there a way to make it work by trying to setup a x,y coordinate system and mark the spot based on the user input? For example:

I would display the board out like this:
int tictacboard[3][3] =
{0,1,2},
{3,4,5},
{6,7,8};
cout << " " << tictacboard[][]

however knowing when creating an array, the cells are arranged as so (because its a 3x3 2d array):
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
thus i want the array read as tictacboard[x][y] //(<--- want as x,y system)

ask user to choose number to mark the spot( say he chose "4"):


tictacboard[1][1] = 'X'
cout << tictacboard

now when it is player's turn it will show:
{0,1,2}
{3,X,5}
{6,7,8}

if player has chosen spaces 0,4,8 to mark the compiler would read this as:
tictacboard[0][0] = 'X'
tictacboard[1][1] = 'X'
tictacboard[2][2] = 'X'
thus showing:
{X,1,2}
{3,X,5}
{6,7,X}


^^or something similar
possible?help?AIUTO


Well, the first thing you should decide on is if you want to use a char array or an int array. If you want to use characters like 'X' and 'O' you should probably use a char array.

char tictacboard[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};

Printing the board could be done like this: (This is the same as on the linked website, just using cout instead of printf.)

cout << "\n\n";
cout << " " << tictacboard[0][0] << " | " << tictacboard[0][1] << " | " << tictacboard[0][2] << "\n";
cout << "---|---|---\n";
cout << " " << tictacboard[1][0] << " | " << tictacboard[1][1] << " | " << tictacboard[1][2] << "\n";
cout << "---|---|---\n";
cout << " " << tictacboard[2][0] << " | " << tictacboard[2][1] << " | " << tictacboard[2][2] << "\n";

An easy way to write to the board would be:

// get player input
int fieldNumber;
cin >> fieldNumber;
tictacboard[fieldNumber / 3][fieldNumber % 3] = 'X';

I'm not sure if this is what you want to hear, since it's basically the same as on that website...
Manit0u
Profile Blog Joined August 2004
Poland17722 Posts
Last Edited: 2012-03-15 23:55:55
March 15 2012 23:54 GMT
#2534
What you're proposing is exactly what the program you linked to does...
Take a closer look at it and all of your problems should be gone.

Edit: Beat me to it
Time is precious. Waste it wisely.
heroyi
Profile Blog Joined March 2009
United States1064 Posts
Last Edited: 2012-03-16 02:40:13
March 16 2012 02:24 GMT
#2535

*btw thanks for the help guys. I figured that I could find a more simpler and less complex solution then the link shows. I don't wanna do it the way the link did it considering it had a lot of cout statements which I felt was unnecessary when you could just display out the array.

edit: God I feel stupid now...
wat wat in my pants
Sluggy
Profile Joined June 2010
United States128 Posts
Last Edited: 2012-03-16 02:31:54
March 16 2012 02:31 GMT
#2536
On March 16 2012 11:24 heroyi wrote:
Why is it when I input:

char tictacboard[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
int i = 0;
int j = 0;

for(i = 0; i < 3 ; i++)
{ for(j = 0 ; j < 3 ; j++)
{cout << tictacboard[i][j] << " " << endl;}}

the output is:
1
2
3
4
5
6
7
8
9

...why and how can I print the numbers out 3x3 like I thought I told it to do...

*btw thanks for the help guys. I figured that I could find a more simpler and less complex solution then the link shows.



It's doing what you're telling it to do. Think about how many times endl is getting called with your current code and see if you can find where you should put it.
heroyi
Profile Blog Joined March 2009
United States1064 Posts
March 16 2012 02:38 GMT
#2537
On March 16 2012 11:31 Sluggy wrote:
Show nested quote +
On March 16 2012 11:24 heroyi wrote:
Why is it when I input:

char tictacboard[3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
int i = 0;
int j = 0;

for(i = 0; i < 3 ; i++)
{ for(j = 0 ; j < 3 ; j++)
{cout << tictacboard[i][j] << " " << endl;}}

the output is:
1
2
3
4
5
6
7
8
9

...why and how can I print the numbers out 3x3 like I thought I told it to do...

*btw thanks for the help guys. I figured that I could find a more simpler and less complex solution then the link shows.



It's doing what you're telling it to do. Think about how many times endl is getting called with your current code and see if you can find where you should put it.

god dammit i feel retarded now...I just realized and came here hoping i could edit it out :/

yea, I played with the endl around and just realized how the code was actually interpreting it...thanks for the help though. Now maybe I can try to actually create this tic tac toe game...
wat wat in my pants
heroyi
Profile Blog Joined March 2009
United States1064 Posts
March 16 2012 05:10 GMT
#2538
http://www.cplusplus.com/forum/general/60651/
^^ I am trying to create my program somewhat similar to this now however I keep getting the error that my variables x, y are undeclared when stated in my array. Why is it that the link above works (although the endl is wrongly placed while my coding keeps getting error messages)...is it because of how he groups them all up with braces?
wat wat in my pants
MisterD
Profile Blog Joined June 2010
Germany1338 Posts
March 16 2012 09:36 GMT
#2539
for (int x = 0; x < 7; x++) { <- x is declared first thing in this line, same for y in the next line. Make sure you didn't write for(x=0... but for(int x=0...
Gold isn't everything in life... you need wood, too!
Manit0u
Profile Blog Joined August 2004
Poland17722 Posts
Last Edited: 2012-03-16 13:48:06
March 16 2012 13:47 GMT
#2540

#include <iostream>
using namespace std;

void displayGraph(int map[6][6]);

int main()
{
int map[6][6] =
{
{1, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1}
};

displayGraph(map);

system("PAUSE");

return 0;
}

void displayGraph(int map[6][6])
{
for (int x = 0; x < 7; x++)
{
for (int y = 0; y < 7; y++)
{
if (map[x][y] == 1)
{
cout << "#";
}
else if (map[x][y] == 0)
{
cout << " ";
}
}
}
return;
}


Cleared up the code (global variables are unnecessary here, used prototype for displayGraph function) and removed endlines. Experiment with it
Time is precious. Waste it wisely.
Prev 1 125 126 127 128 129 1032 Next
Please log in or register to reply.
Live Events Refresh
PiGosaur Cup
00:00
#77
PiGStarcraft362
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
PiGStarcraft362
SpeCial 90
RuFF_SC2 3
StarCraft: Brood War
GuemChi 5610
Artosis 651
ivOry 13
Counter-Strike
minikerr10
taco 2
Super Smash Bros
hungrybox502
AZ_Axe93
Other Games
summit1g10897
tarik_tv4903
Day[9].tv707
shahzam435
C9.Mang0268
ViBE193
Maynarde101
Livibee42
Mew2King26
JuggernautJason23
Organizations
Other Games
gamesdonequick527
Counter-Strike
PGL105
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 17 non-featured ]
StarCraft 2
• Hupsaiya 77
• RyuSc2 31
• musti20045 24
• AfreecaTV YouTube
• intothetv
• Kozan
• sooper7s
• IndyKCrew
• LaughNgamezSOOP
• Migwel
StarCraft: Brood War
• HerbMon 26
• Azhi_Dahaki2
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Other Games
• Scarra1266
• Day9tv707
Upcoming Events
CranKy Ducklings
8h 31m
Kung Fu Cup
11h 31m
Replay Cast
23h 31m
The PondCast
1d 9h
WardiTV Map Contest Tou…
1d 10h
Replay Cast
1d 23h
Escore
2 days
WardiTV Map Contest Tou…
2 days
OSC
2 days
Korean StarCraft League
3 days
[ Show More ]
CranKy Ducklings
3 days
WardiTV Map Contest Tou…
3 days
IPSL
3 days
WolFix vs nOmaD
dxtr13 vs Razz
BSL
3 days
Sparkling Tuna Cup
4 days
WardiTV Map Contest Tou…
4 days
Ladder Legends
4 days
BSL
4 days
IPSL
4 days
JDConan vs TBD
Aegong vs rasowy
Replay Cast
4 days
Replay Cast
5 days
Wardi Open
5 days
Afreeca Starleague
5 days
Bisu vs Ample
Jaedong vs Flash
Monday Night Weeklies
5 days
RSL Revival
6 days
Afreeca Starleague
6 days
Barracks vs Leta
Royal vs Light
WardiTV Map Contest Tou…
6 days
Liquipedia Results

Completed

Proleague 2026-04-13
RSL Revival: Season 4
NationLESS Cup

Ongoing

BSL Season 22
ASL Season 21
CSL 2026 SPRING (S20)
IPSL Spring 2026
StarCraft2 Community Team League 2026 Spring
Nations Cup 2026
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026

Upcoming

Escore Tournament S2: W3
Acropolis #4
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
RSL Revival: Season 5
2026 GSL S1
WardiTV TLMC #16
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.