Hacker News new | past | comments | ask | show | jobs | submit login

Fantastic encapsulation and commentary on the modern web and attentionspace.

There's certainly better ways to do this, but here's one way to automate 1000 clicks from the console:

  for (let i = 0; i < 1000; i++) {
    document.querySelector('button.main-btn-pretty').click();
  }
Automating this art piece probably also says ... something.



> Fantastic encapsulation and commentary on the modern web and attentionspace.

This is why I quit Hearthstone even though I never spent a dime on it. I realized I had been habituated into playing it every day. I started feeling like a lab rat trained to push a button for a reward.


Cookie Clicker taught me this about Destiny and Destiny 2 as well.

I got a lot of enjoyment out of those games - and they were partly the backdrop to socialising online with IRL friends who didn't live close to me - but at some point the absurdity of them became too obvious and we stopped.

"moved on" - to Call of Duty.


That's one of the things that makes Stimulation Clicker so good, by being exposed to the most extreme version, it helps you identify other engineered attention grabbers in everyday life.


> most extreme version

Well...

http://ivark.github.io/


I found this link on here like six months ago and my life hasn't been the same since.


> This is why I quit Hearthstone even though I never spent a dime on it.

Good news, you now have time to pick up The Bazaar instead! (joke aside, it's quite fun, a lot more chill, and not nearly as exploitative as Hearthstone)


> I realized I had been habituated into playing it every day

So like a hobby?

Did you have fun playing it?


It’s when you feel guilt or fomo for not playing every day that it becomes a problem. Many games like this.


A hobby is something you’re supposed to do for fun, not out of habit.


Hahaha yeah! Me too! Good thing I escaped that!

Now back to my coding job, I really have to focus and push enough of these buttons or I’ll get fired and won’t get my pay


Least we're getting paid for those buttons


...now back to my hourly check of HN frontpage. Gotta be diligent and keep up with the industry news.


Are you me?


a fun way is to resize the window to be super tiny and the DVD Bounce really gets going into the millions


Good one. Sounds like a geiger counter.


woah! great job


Automate that bitcoin!

```

setInterval(() => { let max = 100; while(max-->0) { let price = +document.querySelector(".last-price").textContent.trim().slice(1).replace(",","").split("\n")[0]; if (price > 20000) { document.querySelector(".stock-sell").click(); } else if (price < 10000) { document.querySelector(".stock-buy").click(); } else { break; } } })

```


Running it async will prevent the main screen from lagging:

  (async () => {
    const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
    for (let i = 0; i < 10000; i++) {
        document.getElementsByClassName('main-btn')[0].click();
        await delay(5); // 5 ms sleep
    }
  })();


Or use requestAnimationFrame to run infinitely at ~60fps

    window.requestAnimationFrame(function clickButton() {
        document.querySelector(".main-btn").click()
        window.requestAnimationFrame(clickButton)
    })


This doesn't seem to logarithmically scale when you get the click percent increase upgrade, while the other code does.


If you're already using setTimeout, why not just use it directly?

    function clickLoop() {
        document.querySelector('.main-btn').click(); 
        setTimeout(clickLoop, 50) 
    }


What's all this overengineering and waste creating timeouts?

Why not just use setInterval?

    let interval = setInterval(() => document.querySelector('.main-btn').click(), 50) 
Then

    clearInterval(interval)
to stop


How could you be so wasteful traversing the DOM tree every time to find .main-btn? Shame on you.


That's an infinite loop.


Breakable by `clickLoop = null`.


7i67i76i76i76i798778kiki87778uuuuuuuujjjjjjjkkkkkkkk


Infinite version:

let button = document.getElementsByClassName('main-btn');

let clicker = setInterval(() => button[0].click(), 1);

To stop, use this:

window.clearInterval(clicker);


Just go into developer mode and just break on a line like so:

    r.sps && r.purchased && this.addStimulation(r.sps \* n, r.id)
and run

     this.addStimulation(10000000000,r.id)
and resume.


Automating it is the most fun part of these silly games. Here's a bash script to do it on mac (brew install clickclick first)

    while true; do
        cliclick c:.
    done


> Automating this art piece probably also says ... something.

if you do that you're not really experiencing it


I did the same exact thing and then wanted to post it into the groupchat then see this.

1000 iterations too!

Why are we like this XD


To everyone who is doing this:

The only person you are cheating is yourself!!!


Short-circuiting a clicker game (and all other forms of nullifying Skinner boxes) is self-care.


You could shorten it by using $('.main-btn').click()




Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: