• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 00:13
CEST 06:13
KST 13:13
  • 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
Serral wins HomeStory Cup 296Serral wins Maestros of the Game 243ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12
Community News
BSL Season 22 Full Overview & Conclusion7BSL Season 22 Full Overview & Conclusion7Weekly Cups (June 29-July 5): Solar Doubles0MC vs IdrA, Boxer vs Nal_rA to be Legacy Matches @ BlizzCon445.0.16 Hotfix (June 30) - Balance + Bug Fixes40
StarCraft 2
General
Serral wins HomeStory Cup 29 Serral wins Maestros of the Game 2 Reynor: GSL Loss Wasn't About Preparation Format 5.0.16 patch for SC2 goes live (8 worker start) What is your PC setup in 2026 for SCBW/SC2 ?
Tourneys
GSL CK #5 Race War WardiTV Summer Cup 2026 RSL Revival: Season 6 - Qualifiers and Main Event HomeStory Cup 29 Vespene Cup #1 — $300+ USD, July 10
Strategy
[G] Having the right mentality to improve
Custom Maps
New Map Maker - Looking for Advice - Love or Hate Work In Progress Melee Maps [D]RTS in all its shapes and glory <3
External Content
The PondCast: SC2 News & Results Mutation # 534 Burning Evacuation Mutation # 533 Die Together Mutation # 532 Nuclear Family
Brood War
General
Pros Debate: Zerg Unfairly Nerfed? (ASL S22 map) BSL Season 22 Full Overview & Conclusion BGH Auto Balance -> http://bghmmr.eu/ BW General Discussion ASL22 General Discussion
Tourneys
[ASL22] Wildcard Qualifier IPSL Spring 2026 Top 4! [Megathread] Daily Proleagues CSLAN 4 is Coming!
Strategy
Fighting Spirit mining rates Simple Questions, Simple Answers Creating a full chart of Zerg builds Relatively freeroll strategies
Other Games
General Games
Stormgate/Frost Giant Megathread General RTS Discussion Thread Path of Exile Summer Games Done Quick 2026! Nintendo Switch Thread
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
NeO.D_StephenKing vs This Guy From 1 Million Dance TL Mafia Community Thread TL Mafia Power Rank Vanilla Mini Mafia
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread UK Politics Mega-thread YouTube Thread Canadian Politics Mega-thread
Fan Clubs
The IdrA Fan Club The HerO Fan Club!
Media & Entertainment
Movie Discussion! Anime Discussion Thread Series you have seen recently...
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Tennis[sport] Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
Simple Questions Simple Answers FPS when play League Of Legend on laptop How to clean a TTe Thermaltake keyboard?
TL Community
The Automated Ban List
Blogs
Major Shifts in the Gaming I…
TrAiDoS
An Exploration of th…
waywardstrategy
Gauntlet SC2: A Retrospectiv…
Ctone23
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Evil Gacha Games and the…
ffswowsucks
StarCraft improvement
iopq
Customize Sidebar...

Website Feedback

Closed Threads



Active: 7536 users

The Big Programming Thread - Page 338

Forum Index > General Forum
Post a Reply
Prev 1 336 337 338 339 340 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.
Ilikestarcraft
Profile Blog Joined November 2004
Korea (South)17743 Posts
August 09 2013 16:20 GMT
#6741
Ah thanks, makes sense now.
ils
"Nana is a goddess. Or at very least, Nana is my goddess." - KazeHydra
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2013-08-09 16:44:13
August 09 2013 16:42 GMT
#6742
-- ignore, i was wrong --
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
Last Edited: 2013-08-09 16:51:14
August 09 2013 16:50 GMT
#6743
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.
If you have a good reason to disagree with the above, please tell me. Thank you.
gedatsu
Profile Joined December 2011
1286 Posts
Last Edited: 2013-08-09 16:53:58
August 09 2013 16:52 GMT
#6744
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

A statement like "a = b" will set the variable a to b, and then return the (new) value of a. The while test interprets 0 as false, and anything else as true. So when you reach the terminating '\0' of t, it will set *s to '\0', and then return '\0'=0 to the while statement which interprets it as false and stops.


The code is susceptible to a buffer overflow attack, you shouldn't use it.
doubleupgradeobbies!
Profile Blog Joined June 2008
Australia1337 Posts
Last Edited: 2013-08-09 16:58:18
August 09 2013 16:56 GMT
#6745
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?


Just aside from what others have said, it's often important to know what the return value of functions/operators are, because c will use them as implicit bool values.

As spine said, try not to program like this, it's difficult to read and forces people to memorize alot of return values especially when you start putting functions in there. Some of them are common/intuitive and arn't a big problem, but it's a slippery slope for putting more obscure functions into your while/if statements and it becomes a pain to read for even experienced programmers.

That said, it is important to know that return values can be used in that fashion, because people do this all the time, it's even pretty common in textbooks. So that at least you will know to look up return values when you see something like that.

Basically don't do it yourself, but be prepared to deal with having to read it :D
MSL, 2003-2011, RIP. OSL, 2000-2012, RIP. Proleague, 2003-2012, RIP. And then there was none... Even good things must come to an end.
nunez
Profile Blog Joined February 2011
Norway4003 Posts
August 09 2013 18:04 GMT
#6746
On August 10 2013 01:50 spinesheath wrote:
Show nested quote +
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.


we have nullptr now! :>
conspired against by a confederacy of dunces.
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
August 09 2013 18:22 GMT
#6747
On August 10 2013 03:04 nunez wrote:
Show nested quote +
On August 10 2013 01:50 spinesheath wrote:
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.


we have nullptr now! :>

Yeah, I just didn't actually code any C++ lately so I haven't gotten a chance to use it and forgot to mention it. It's a lot better than the previous solution as it has much better type safety. NULL should be considered obsolete imo (even if the definition is changed to nullptr, though I wonder how many compilers would actually do that since it might break existing hackish code).
If you have a good reason to disagree with the above, please tell me. Thank you.
Kambing
Profile Joined May 2010
United States1176 Posts
August 09 2013 18:25 GMT
#6748
On August 10 2013 03:22 spinesheath wrote:
Show nested quote +
On August 10 2013 03:04 nunez wrote:
On August 10 2013 01:50 spinesheath wrote:
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.


we have nullptr now! :>

Yeah, I just didn't actually code any C++ lately so I haven't gotten a chance to use it and forgot to mention it. It's a lot better than the previous solution as it has much better type safety. NULL should be considered obsolete imo (even if the definition is changed to nullptr, though I wonder how many compilers would actually do that since it might break existing hackish code).


The standard defines conversions from nullptr to NULL (and other pre-C++11 null types), so there's no concern of breaking existing code.
Rannasha
Profile Blog Joined August 2010
Netherlands2398 Posts
August 09 2013 18:31 GMT
#6749
On August 09 2013 03:34 Millitron wrote:
Show nested quote +
On August 08 2013 14:18 Rannasha wrote:
On August 08 2013 13:16 Millitron wrote:
Alright, my google-fu has failed me, I'm pretty stumped on this one.

I'm trying to use Java to create a simple coordinate plane in an image file. Basically I want a jpeg that looks like graph paper.

I can't simply grab one off google images because I don't know exactly what size I need yet or how big each grid will be, and I'd like to be able to change these easily.

My current code is as follows:
import java.awt.image.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.Color;


public class BlankMapBuilder {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
File mapfile = new File("blankmap.bmp");
BufferedImage image = ImageIO.read(mapfile);
Color c = Color.BLACK;
for (int i = 1; i < 2000; i++)
{
for (int j = 1; j < 2000; j++)
{
if((j % 10 == 0) || (i % 10 == 0))
{
System.out.println("j: " + j + "i: " + i);
image.setRGB(j, i, c.getRGB());
}
}
}
}
}


I've got a blank bitmap image of the right size and name in the package in eclipse, and the print statement triggers exactly as it should. I get no exceptions thrown or anything like that. But the image is still blank after I run the code. "image.setRGB()" doesn't seem to be doing anything.


Unless this isn't your entire code, you're not writing the image to a file. You create an empty .bmp, read it in, then manipulate the image in memory and then... nothing.

Instead, try creating the image object, manipulate it and then write it to a file.

edit: Changing your loops to
for (int i = 10; i < 2000; i += 10)

(and similar for j) will reduce the number of iterations by a factor 100 and allows you to also remove the if-statement, giving an additional small speedup.

Thanks. I got it to work, though I couldn't do your idea for the for-loops. That only colored the corners of every, it did not draw the edges. I don't mind the minor efficiency cost. I doubt the images will ever be much bigger than 2000x2000, and they're not used in anything time-critical.

Ah yes, you're right. I didn't think it through long enough.

What would work is something like:
for (int i = 10; i < 2000; i+= 10)
{
for (int j = 1; j < 2000; j++)
{
DoSomethingWithPixel(i, j);
DoSomethingWithPixel(j, i);
}
}
Such flammable little insects!
bangsholt
Profile Joined June 2011
Denmark138 Posts
August 10 2013 18:20 GMT
#6750
But why would you do that You'll just take the runtime from "not very long" to "a bit less than not very long", and now it is not obvious why you are skipping it

Unless the run time is a problem, you should not optimize. If you do optimize, run a profiler and figure out where you should optimize. You are almost always wrong in your guesses with where to optimize.

Clearness of code is as important if not more important than speed, as it's hard to achieve better speed if you do not know what is going on.
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-08-10 19:41:40
August 10 2013 19:38 GMT
#6751
On August 11 2013 03:20 bangsholt wrote:
But why would you do that You'll just take the runtime from "not very long" to "a bit less than not very long", and now it is not obvious why you are skipping it

Unless the run time is a problem, you should not optimize. If you do optimize, run a profiler and figure out where you should optimize. You are almost always wrong in your guesses with where to optimize.

Clearness of code is as important if not more important than speed, as it's hard to achieve better speed if you do not know what is going on.


Any "a bit less than not very long" is better than "not very long". If something isn't clear, you always have /* comments */, right? I don't really agree with your thinking. After all, one of Software Engineering's goals is efficiency, in particular not to waste system resources.
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2013-08-10 20:24:00
August 10 2013 20:09 GMT
#6752
I believe bangsholt meant if you're sacrificing readability in your code, as in your code isn't as self-documenting as it is before, the change you made is covering up another issue. Your comments should explain, this-and-that does X function, and if someone reads your code, they should very easily understand what's going on. Ideally you shouldn't be explaining why you did X optimization. X optimization should just be intuitive.

In this case, it's decently intuitive, so I don't think bangsholt's point stands (I would say the loops are still a bit unclear in their intent (for example using x and y instead of i and j, etc)), but the idea is okay.


In an ideal world, when you optimize, you shouldn't be writing little hacky its to get X marginally faster. Instead, you should be focusing on why your original code wasn't as fast as it could've been before. (Some exceptions may apply).

Small hackish behavior should feel very dirty because the premise is that all software problems can be resolved to much smaller, simpler problems, so when you use little "tricks" to gain an edge, it means the solution to your original problem wasn't optimal, and you could've found a more elegant solution that doesn't require this quirky, unclear optimization.
There is no one like you in the universe.
waxypants
Profile Blog Joined September 2009
United States479 Posts
August 10 2013 21:03 GMT
#6753
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?


Question was eventually addressed adequately I think, but there seems to be a lot of misunderstanding about NULL. NULL is meant for pointers. NULL actually has nothing to do with this problem. The conditional takes the value of "*s" after it has been assigned and will evaluate to false if it was 0 and true otherwise. At the end of the string is the null character ('\0', 0x00, etc). This is not the same as NULL, which is the null pointer. So, after "*s" is set to the null character, the while statement evaluates to false and then breaks out. As a side note, in C NULL can be defined as


#define NULL ((void*)0)


which makes its intention more clear. Setting a pointer to 0 rather than NULL sucks because then you lose the ability to look at the assignment statement and immediately tell if you are dealing with a pointer or an integer type.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
August 10 2013 21:06 GMT
#6754
On August 11 2013 06:03 waxypants wrote:

#define NULL ((void*)0)


which makes its intention more clear. Setting a pointer to 0 rather than NULL sucks because then you lose the ability to look at the assignment statement and immediately tell if you are dealing with a pointer or an integer type.

It doesn't matter so much, as both (void *)0 and 0 are the same bit configuration underneath. The only difference between the two is compiler semantics.
waxypants
Profile Blog Joined September 2009
United States479 Posts
Last Edited: 2013-08-10 21:30:27
August 10 2013 21:28 GMT
#6755
On August 11 2013 06:06 CecilSunkure wrote:
Show nested quote +
On August 11 2013 06:03 waxypants wrote:

#define NULL ((void*)0)


which makes its intention more clear. Setting a pointer to 0 rather than NULL sucks because then you lose the ability to look at the assignment statement and immediately tell if you are dealing with a pointer or an integer type.

It doesn't matter so much, as both (void *)0 and 0 are the same bit configuration underneath. The only difference between the two is compiler semantics.


I'm a bit confused as I don't even see how your point relates to my point, or even how even the rest of your statement implies "It doesn't matter so much". Additionally, they are not even necessarily the same "bit configuration underneath" (edit: As assigned to pointers, they are, but not in general).
Shenghi
Profile Joined August 2010
167 Posts
August 10 2013 21:38 GMT
#6756
On August 11 2013 04:38 darkness wrote:
Show nested quote +
On August 11 2013 03:20 bangsholt wrote:
But why would you do that You'll just take the runtime from "not very long" to "a bit less than not very long", and now it is not obvious why you are skipping it

Unless the run time is a problem, you should not optimize. If you do optimize, run a profiler and figure out where you should optimize. You are almost always wrong in your guesses with where to optimize.

Clearness of code is as important if not more important than speed, as it's hard to achieve better speed if you do not know what is going on.


Any "a bit less than not very long" is better than "not very long". If something isn't clear, you always have /* comments */, right? I don't really agree with your thinking. After all, one of Software Engineering's goals is efficiency, in particular not to waste system resources.

If something isn't clear, you ought to rewrite it so that it is clear rather than using comments to explain the unclear code. Furthermore, "a bit less long" is really only better than "not very long" if we're talking about orders of magnitude. The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process. So you're really giving up something important and hardly gain anything in return.
People are not born stupid, they choose to be stupid. If you made that choice, please change your mind.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2013-08-10 22:35:43
August 10 2013 22:35 GMT
#6757
On August 11 2013 06:38 Shenghi wrote:
The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process.


The O(N^2) is a notation of complexity, not performance.

for (i = 0; i < 1000;++i)

for (i = 0; i < 100; ++i)


Both are O(1) but the second is still preferrable whenever possible. Just because they are both O(1) doesn't mean that one can't be better than the other. The code being discussed makes the execution 10 times faster, so that is not a minor optimization. Depending on the context it can be a huge difference for a really, really, really tiny loss of readability.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
August 10 2013 22:38 GMT
#6758
On August 11 2013 07:35 Morfildur wrote:
Show nested quote +
On August 11 2013 06:38 Shenghi wrote:
The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process.


The O(N^2) is a notation of complexity, not performance.

for (i = 0; i < 1000;++i)

for (i = 0; i < 100; ++i)


Both are O(1) but the second is still preferrable whenever possible. Just because they are both O(1) doesn't mean that one can't be better than the other. The code being discussed makes the execution 10 times faster, so that is not a minor optimization. Depending on the context it can be a huge difference for a really, really, really tiny loss of readability.

That's O(N)

N is 1000, then 100.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2013-08-10 22:45:22
August 10 2013 22:44 GMT
#6759
On August 11 2013 07:38 CecilSunkure wrote:
Show nested quote +
On August 11 2013 07:35 Morfildur wrote:
On August 11 2013 06:38 Shenghi wrote:
The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process.


The O(N^2) is a notation of complexity, not performance.

for (i = 0; i < 1000;++i)

for (i = 0; i < 100; ++i)


Both are O(1) but the second is still preferrable whenever possible. Just because they are both O(1) doesn't mean that one can't be better than the other. The code being discussed makes the execution 10 times faster, so that is not a minor optimization. Depending on the context it can be a huge difference for a really, really, really tiny loss of readability.

That's O(N)

N is 1000, then 100.


Depends. The 1000 is a constant, it never changes. Constant execution time is O(1). If the 1000 was passed in via a variable, it would be O(N), i.e. scales linarly. The 100 is not related to the 1000 before, so it's in itself O(1) as well.

In the case of
void foo(int x)
{
for (int i = 0; i < x; ++i) { }
}

foo(1000);
foo(100);

it would be O(N)

Then again, that is just my interpretation. Might be that comp sci people disagree with it. I never cared much about the theory of that stuff since it has no connection to real programming anyways.
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-08-10 22:47:33
August 10 2013 22:46 GMT
#6760

for (int i = 10; i < 2000; i+= 10)
{
for (int j = 1; j < 2000; j++)
{
DoSomethingWithPixel(i, j);
DoSomethingWithPixel(j, i);
}
}


How is this not O(N^2)? As far as I remember, nested loop is O(N^2) or O(N^3) if you have 3 loops inside each other. I'm 99% sure this is the case, but regardless if I'm right, I still need to refresh my Big O notation knowledge.
Prev 1 336 337 338 339 340 1032 Next
Please log in or register to reply.
Live Events Refresh
Replay Cast
00:00
GSL CK #5 - Day 2
CranKy Ducklings145
EnkiAlexander 71
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
WinterStarcraft679
NeuroSwarm 221
RuFF_SC2 196
oGsTOP 148
StarCraft: Brood War
Rain 6736
GuemChi 2924
Bale 17
ZergMaN 13
Icarus 4
Dota 2
canceldota147
LuMiX0
Counter-Strike
summit1g11102
taco 294
m0e_tv143
Other Games
JimRising 571
C9.Mang0356
Maynarde151
Nina71
Organizations
Other Games
gamesdonequick2187
BasetradeTV223
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 14 non-featured ]
StarCraft 2
• practicex 13
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• Azhi_Dahaki28
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Rush1006
• Stunt351
Upcoming Events
WardiTV Weekly
6h 48m
The PondCast
1d 5h
Replay Cast
2 days
CrankTV Team League
2 days
Replay Cast
3 days
CrankTV Team League
3 days
Replay Cast
3 days
RSL Revival
4 days
Clem vs Lambo
Scarlett vs Cure
CranKy Ducklings
4 days
IPSL
4 days
Dragon vs Hawk
[ Show More ]
RSL Revival
5 days
Classic vs Trap
herO vs SHIN
Sparkling Tuna Cup
5 days
IPSL
5 days
Bonyth vs Ret
WardiTV Weekly
6 days
Monday Night Weeklies
6 days
Liquipedia Results

Completed

YSL S3
HSC XXIX
Eternal Conflict S2 E2

Ongoing

IPSL Spring 2026
Acropolis #4
CSL 2026 Summer (S21)
RSL Revival: Season 6
CranK Gathers Season 4: BW vs SC2 Team League
SCTL 2026 Spring
XSE Pro League 2026
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

Upcoming

Escore Tournament S3: W3
ASL S22 SEASON OPEN Day 1
Escore Tournament S3: W4
ASL S22 SEASON OPEN Day 2
Escore Tournament S3: W5
CSLAN 4
Blizzard Classic Cup 2026
HSC XXX
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
Light Tournament 2026
Eternal Conflict S2 Finale
Eternal Conflict S2 E3
Logitech G Connect 2026
StarSeries Fall 2026
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
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.