• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 22:21
CEST 04:21
KST 11:21
  • 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: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12TL.net Map Contest #22 - Voting & Ladder Map Selection7Code S Season 2 (2026) - RO8 Preview7[ASL21] Finals Preview: Two Legacies21
Community News
Weekly Cups (June 8-14): Clem and Solar double, PTR tested0RSL: S6 Finals played at BlizzCon 202611Douyu Cup 2026: $20,000 Legends Event (June 26-28)10[BSL22] Non-Korean Championship from 13 to 28 June4Weekly Cups (May 25-31): Clem doubles, 2v2 circuit heads toward finale0
StarCraft 2
General
TL Poll: How do you feel about the 5.0.16 PTR balance changes? Code S Season 2 (2026) - RO8 Preview Updates to The Core/Core Lite for v5.0.16? RSL: S6 Finals played at BlizzCon 2026 Weekly Cups (June 8-14): Clem and Solar double, PTR tested
Tourneys
GSL CK #4 20-21th June Douyu Cup 2026: $20,000 Legends Event (June 26-28) Maestros of The Game 2 announcement and schedule ! Sparkling Tuna Cup - Weekly Open Tournament Sea Duckling Open (Global, Bronze-Diamond)
Strategy
[G] Having the right mentality to improve
Custom Maps
Work In Progress Melee Maps [D]RTS in all its shapes and glory <3
External Content
Mutation # 530 One For All The PondCast: SC2 News & Results Mutation # 529 Opportunities Unleashed Mutation # 528 Infection Detected
Brood War
General
vespene.gg — BW replays in browser BW General Discussion Where is EffOrt? BGH Auto Balance -> http://bghmmr.eu/ Quality of life changes in BW that you will like ?
Tourneys
[Megathread] Daily Proleagues [ASL21] Grand Finals [BSL22] Grand Finals - Sunday 21:00 CEST Escore Tournament StarCraft Season 2
Strategy
Relatively freeroll strategies Creating a full chart of Zerg builds Why doesn't anyone use restoration? Any training maps people recommend?
Other Games
General Games
Stormgate/Frost Giant Megathread Beyond All Reason ZeroSpace Megathread Total War: Warhammer 40K Path of Exile
Dota 2
Looking for a Dota Mentor Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
Vanilla Mini Mafia
Community
General
US Politics Mega-thread UK Politics Mega-thread Russo-Ukrainian War Thread [H]Internet/Gaming Cafe Tips and Tricks Trading/Investing Thread
Fan Clubs
The HerO Fan Club! The herO Fan Club!
Media & Entertainment
Movie Discussion! [Req][Books] Good Fantasy/SciFi books [TV/BOOK] *SPOILERS* Game of Thrones Discussion [Manga] One Piece
Sports
2024 - 2026 Football Thread TeamLiquid Health and Fitness Initiative For 2023 Formula 1 Discussion Cricket [SPORT] NBA General Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread Facing Challenges in Mobile App Development
TL Community
The Automated Ban List
Blogs
Does Workplace Frustration D…
TrAiDoS
An Exploration of th…
waywardstrategy
I'm an arrogant trash talke…
FlaShFTW
Gauntlet SC2: A Retrospectiv…
Ctone23
Why RTS gamers make better f…
gosubay
Customize Sidebar...

Website Feedback

Closed Threads



Active: 7062 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
Poland17768 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
Poland17768 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
Poland17768 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
Poland17768 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
Poland17768 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
#86 (PTR Edition)
EnkiAlexander 43
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
PiGStarcraft616
StarCraft: Brood War
Rain 3191
GuemChi 2977
Sea 1973
Artosis 579
Mind 40
Sexy 35
Terrorterran 18
Bale 6
Dota 2
LuMiX1
Super Smash Bros
hungrybox1279
AZ_Axe306
Other Games
summit1g5061
Day[9].tv1972
C9.Mang0476
ViBE150
Maynarde92
Trikslyr59
CosmosSc2 13
Organizations
Other Games
gamesdonequick993
BasetradeTV240
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 14 non-featured ]
StarCraft 2
• Berry_CruncH166
• Hupsaiya 93
• davetesta6
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Other Games
• Day9tv1972
Upcoming Events
Replay Cast
6h 39m
The PondCast
1d 7h
OSC
1d 21h
CranKy Ducklings
2 days
GSL
3 days
Maru vs ShoWTimE
Classic vs Reynor
herO vs Lambo
Solar vs Clem
BSL22 NKC (BSL vs China)
3 days
XuanXuan vs Jaystar
Mihu vs Messiah
eOnzErG vs Dewalt
Bonyth vs Jaystar
TerrOr vs Messiah
XuanXuan vs Mihu
eOnzErG vs Jaystar
Replay Cast
3 days
GSL
4 days
Patches Events
4 days
BSL22 NKC (BSL vs China)
4 days
Dewalt vs Messiah
Bonyth vs Mihu
TerrOr vs XuanXuan
eOnzErG vs Messiah
Jaystar vs Mihu
Dewalt vs XuanXuan
Bonyth vs TerrOr
[ Show More ]
Replay Cast
4 days
WardiTV Weekly
5 days
Sparkling Tuna Cup
6 days
Liquipedia Results

Completed

Proleague 2026-06-16
uThermal 2v2 2026 Main Event
Heroes Pulsing #1

Ongoing

IPSL Spring 2026
KCM Race Survival 2026 Season 2
Acropolis #4
CSCL: Masked Kings S4
YSL S3
BSL 22 Non-Korean Championship
SCTL 2026 Spring
Maestros of the Game 2
WardiTV Spring 2026
Murky Cup 2026
Heroes Pulsing #2
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
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1

Upcoming

CSL 2026 Summer (S21)
CSLAN 4
Blizzard Classic Cup 2026
Kung Fu Cup 2026 Grand Finals
RSL Revival: Season 6
CranK Gathers Season 4: BW vs SC2 Team League
HSC XXIX
Douyu Cup 2026
BCC 2026
Heroes Pulsing #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026
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.