• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 08:11
CET 14:11
KST 22:11
  • 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
Behind the Blue - Team Liquid History Book15Clem wins HomeStory Cup 289HomeStory Cup 28 - Info & Preview13Rongyi Cup S3 - Preview & Info8herO wins SC2 All-Star Invitational14
Community News
ACS replaced by "ASL Season Open" - Starts 21/0218LiuLi Cup: 2025 Grand Finals (Feb 10-16)23Weekly Cups (Feb 2-8): Classic, Solar, MaxPax win2Nexon's StarCraft game could be FPS, led by UMS maker10PIG STY FESTIVAL 7.0! (19 Feb - 1 Mar)13
StarCraft 2
General
How do you think the 5.0.15 balance patch (Oct 2025) for StarCraft II has affected the game? Nexon's StarCraft game could be FPS, led by UMS maker Terran Scanner Sweep Behind the Blue - Team Liquid History Book Weekly Cups (Jan 12-18): herO, MaxPax, Solar win
Tourneys
RSL Season 4 announced for March-April LiuLi Cup: 2025 Grand Finals (Feb 10-16) PIG STY FESTIVAL 7.0! (19 Feb - 1 Mar) RSL Revival: Season 4 Korea Qualifier (Feb 14) Sparkling Tuna Cup - Weekly Open Tournament
Strategy
Custom Maps
Map Editor closed ? [A] Starcraft Sound Mod
External Content
The PondCast: SC2 News & Results Mutation # 512 Overclocked Mutation # 511 Temple of Rebirth Mutation # 510 Safety Violation
Brood War
General
Which units you wish saw more use in the game? StarCraft player reflex TE scores [ASL21] Potential Map Candidates Gypsy to Korea ACS replaced by "ASL Season Open" - Starts 21/02
Tourneys
Escore Tournament StarCraft Season 1 [Megathread] Daily Proleagues Small VOD Thread 2.0 KCM Race Survival 2026 Season 1
Strategy
Fighting Spirit mining rates Zealot bombing is no longer popular? Simple Questions, Simple Answers Current Meta
Other Games
General Games
Path of Exile Diablo 2 thread Nintendo Switch Thread Battle Aces/David Kim RTS Megathread ZeroSpace Megathread
Dota 2
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 Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas Vanilla Mini Mafia TL Mafia Community Thread
Community
General
US Politics Mega-thread Ask and answer stupid questions here! European Politico-economics QA Mega-thread The Games Industry And ATVI Russo-Ukrainian War Thread
Fan Clubs
The IdrA Fan Club The herO Fan Club!
Media & Entertainment
[Req][Books] Good Fantasy/SciFi books [Manga] One Piece Anime Discussion Thread
Sports
2024 - 2026 Football Thread
World Cup 2022
Tech Support
TL Community
The Automated Ban List
Blogs
ADHD And Gaming Addiction…
TrAiDoS
My 2025 Magic: The Gathering…
DARKING
Life Update and thoughts.
FuDDx
How do archons sleep?
8882
StarCraft improvement
iopq
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1905 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
Poland17660 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
Poland17660 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
Poland17660 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
Poland17660 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
Poland17660 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
uThermal 2v2 Circuit
12:00
Bonus Cup #3
uThermal306
Liquipedia
LiuLi Cup
11:00
2025 Grand Finals Playoffs
Clem vs MaruLIVE!
Rogue vs TriGGeR
ByuN vs Serral
RotterdaM1904
ComeBackTV 1686
PiGStarcraft581
IndyStarCraft 395
BRAT_OK 222
Rex163
3DClanTV 64
IntoTheiNu 28
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RotterdaM 1904
PiGStarcraft581
IndyStarCraft 395
uThermal 306
BRAT_OK 222
Rex 163
goblin 80
StarCraft: Brood War
Britney 45225
Barracks 6366
Jaedong 1502
Flash 1495
Hyuk 1047
Stork 535
Soma 509
firebathero 438
Light 385
Soulkey 257
[ Show more ]
Snow 249
Rush 183
Last 177
Leta 145
Pusan 113
Killer 64
Aegong 60
Sea.KH 58
sorry 40
Bonyth 40
Movie 40
Yoon 35
Hm[arnc] 35
Free 32
ToSsGirL 31
Sharp 29
soO 29
Terrorterran 24
yabsab 23
Shine 20
910 18
IntoTheRainbow 17
zelot 16
Shinee 16
JulyZerg 15
HiyA 15
ivOry 15
Calm 0
Dota 2
Gorgc2931
singsing2362
XcaliburYe163
febbydoto3
Counter-Strike
olofmeister3295
fl0m1980
byalli440
Super Smash Bros
Mew2King94
Heroes of the Storm
Khaldor254
Other Games
B2W.Neo1087
crisheroes455
KnowMe56
ArmadaUGS47
DeMusliM11
Organizations
Counter-Strike
PGL19931
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 14 non-featured ]
StarCraft 2
• Berry_CruncH118
• Adnapsc2 7
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• FirePhoenix4
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos3252
Upcoming Events
PSISTORM Gaming Misc
3h 44m
RSL Revival
4h 49m
AI Arena Tournament
6h 49m
Replay Cast
10h 49m
Sparkling Tuna Cup
20h 49m
LiuLi Cup
21h 49m
Ladder Legends
1d 4h
Replay Cast
1d 10h
Replay Cast
1d 19h
Wardi Open
1d 22h
[ Show More ]
Monday Night Weeklies
2 days
OSC
2 days
WardiTV Winter Champion…
2 days
Replay Cast
3 days
WardiTV Winter Champion…
3 days
Replay Cast
4 days
PiG Sty Festival
4 days
The PondCast
4 days
KCM Race Survival
4 days
WardiTV Winter Champion…
4 days
Replay Cast
5 days
PiG Sty Festival
5 days
Epic.LAN
5 days
Replay Cast
6 days
PiG Sty Festival
6 days
CranKy Ducklings
6 days
Epic.LAN
6 days
Liquipedia Results

Completed

Escore Tournament S1: W8
Rongyi Cup S3
Underdog Cup #3

Ongoing

KCM Race Survival 2026 Season 1
LiuLi Cup: 2025 Grand Finals
Nations Cup 2026
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
SL Budapest Major 2025

Upcoming

Escore Tournament S1: King of Kings
[S:21] ASL SEASON OPEN 1st Round
[S:21] ASL SEASON OPEN 1st Round Qualifier
[S:21] ASL SEASON OPEN 2nd Round
[S:21] ASL SEASON OPEN 2nd Round Qualifier
Acropolis #4
IPSL Spring 2026
HSC XXIX
uThermal 2v2 2026 Main Event
Bellum Gens Elite Stara Zagora 2026
RSL Revival: Season 4
WardiTV Winter 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
FISSURE Playground #3
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League Season 23
ESL Pro League Season 23
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.