Minecraft PC IP: play.cubecraft.net

mitgobla

Marketplace Coordinator
Dec 11, 2018
221
936
174
Wales, United Kingdom
ben-dodd.com
Pronouns
He/Him
Damn dude that's some really impressive stuff!
Thank you :D

How long did each of these projects take
Nearly all these projects have been at least 20 hours of work. The FLL Animal Allies project had a combined 2000+ hours work put into it from just three members!

any tips on finding inspiration to create new projects?
Don't worry, I struggle too with finding inspiration or motivation to finish stuff off; I even have a folder collecting dust full of unfinished projects. The advice I would give you is, don't be afraid to start something that you will never finish. Even a small amount of work will be new experience and that can help you find what you are good at. Most of my projects are based around issues/problems that affect my life/community - so I feel I can dedicate time to work on them I suppose?


how did you get in to all of this?
It's not as impressive as it sounds but when I was 9 years old I played Roblox on a tiny slow laptop. I couldn't play games but I was able to code LUA in its editor. Eventually got bored of the game a few years later and quickly found that Python was my next favourite :)
 

Max ♠

Forum Expert
Feb 20, 2016
1,420
2,940
344
24
North pole
Sure, I'd be interested to see how the generator worked :)
Made it over a year ago so its pretty jank, first time working with async stuff so yeah, extremely jank
Code:
const Jimp = require("jimp");
const sizeOf = require("image-size");
const fs = require("fs");
const images = require("images");

var fileAvg = {};
var filesQueue = [];
var filler_image_width;
var filler_image_height;
var result_image_width;
var result_image_height;

fs.readdirSync("images").forEach(file => {
    fileAvg[file] = {};
    filesQueue.push(file);
});

// console.log(filenames);

fs.readdirSync("images").forEach(file => {
    var height;
    var width;
    var totalPixels;
    var colors = {r:0,g:0,b:0};

    Jimp.read("images/" + file, function(err, image) {
        sizeOf("images/" + file, function(err, dimensions) {
            if(err) {
                console.log(err);
                return;
            }
            height = dimensions.height;
            width = dimensions.width;
            totalPixels = height * width;

            for(var i = 0; i < height; i++) {
                for(var j = 0; j < width; j++) {
                    pixelColor = Jimp.intToRGBA(image.getPixelColor(i,j));
                    colors.r += pixelColor.r;
                    colors.g += pixelColor.g;
                    colors.b += pixelColor.b;
                }
                // console.log(100/height*i + "% done");
            }

            colors.r = Math.round(colors.r / totalPixels);
            colors.g = Math.round(colors.g / totalPixels);
            colors.b = Math.round(colors.b / totalPixels);

            // avgColors.push(colors);
            fileAvg[file] = colors;
            removeFromArray(file);
            if(filesQueue.length == 0) {
                filler_image_width = width;
                filler_image_height = height;
                console.log("Image calculation started");
                startImageCalculation();
            }
        });
    });
});

function removeFromArray(toRemove) {
    for(var i = 0; i < filesQueue.length; i++) {
        if(filesQueue[i] == toRemove) {
            filesQueue.splice(i, 1);
        }
    }
    console.log("Removed '" + toRemove + "' from queue");
}

function startImageCalculation() {
    Jimp.read("input.png", function(err, image) {
        sizeOf("input.png", function(err, dimensions) {
            result_image_width = filler_image_width * dimensions.width;
            result_image_height = filler_image_height * dimensions.height;


            var colorsInput = [];
            for(var i = 0; i < dimensions.height; i++) {
                for(var j = 0; j < dimensions.width; j++) {
                    colorsInput.push(Jimp.intToRGBA(image.getPixelColor(j,i)));
                }
                console.log("Image calculation " + 100/dimensions.height*i + "% done");
            }

            console.log("Image calculation 100% done");
            console.log("Starting image drawing");

            // console.log(colorsInput);

            var imageList = [];

            for(var i = 0; i < colorsInput.length; i++) {
                imageList.push(getClosestAverageImg(colorsInput[i]).img);
            }

            mergeImages(imageList, result_image_width, result_image_height, filler_image_width, filler_image_height);
        });
    });
}

function getClosestAverageImg(input) {
    // console.log(avgColors.length);
    // Transparancy semi-support
    // if(input.a == 0) {
    //     return {img : "empty.png"};
    // }

    var closest = { distance : 255*3, img : "none"};

    for(var key in fileAvg) {
        var current = { distance : distanceBetween(input.r, fileAvg[key].r) + distanceBetween(input.g, fileAvg[key].g) + distanceBetween(input.b, fileAvg[key].b), img : key};
        if(current.distance < closest.distance) {
            closest = current;
        }
    }

    return closest;

}

function distanceBetween(num1, num2) {
    var distance = 0;
    while(num1 < num2) {
        num1++;
        distance++;
    }

    while(num2 < num1) {
        num2++;
        distance++;
    }
    return distance;
}

function mergeImages(fillerImages, result_width, result_height, filler_width, filler_height) {
    var image = images(result_width, result_height);
    var current_width = 0;
    var current_height = 0;

    for(var i = 0; i < fillerImages.length; i++) {

        image.draw(images("images/" + fillerImages[i]), current_width, current_height);
        current_width += filler_width;
        if(current_width == result_width) {
            current_height += filler_height;
            current_width = 0;
            console.log("Image drawing " + 100/fillerImages.length*i + "% done")
        }
    }

    console.log("Image drawing 100% done");

    console.log("Saving image...");

    image.save("output2.png");
}
 
  • Like
Reactions: Sulphate

Sulphate

Novice Member
Oct 20, 2017
201
157
58
England
Thank you :D
Nearly all these projects have been at least 20 hours of work. The FLL Animal Allies project had a combined 2000+ hours work put into it from just three members!

Don't worry, I struggle too with finding inspiration or motivation to finish stuff off; I even have a folder collecting dust full of unfinished projects. The advice I would give you is, don't be afraid to start something that you will never finish. Even a small amount of work will be new experience and that can help you find what you are good at. Most of my projects are based around issues/problems that affect my life/community - so I feel I can dedicate time to work on them I suppose?

It's not as impressive as it sounds but when I was 9 years old I played Roblox on a tiny slow laptop. I couldn't play games but I was able to code LUA in its editor. Eventually got bored of the game a few years later and quickly found that Python was my next favourite :)

Damn.. 2000 hours is a huge amount for three people :x that must have been a pretty big project xP

Glad to know it's not an uncommon issue :) thank you for the advice, I'll certainly keep this in mind when I'm thinking of starting a project! That's a good reason to make projects :) I've only made basic stuff compared to you so I don't think I've really done anything that solved problems around me.

That's a pretty good way to get into it :) I got into programming through Minecraft, when I befriended a developer on a server and he inspired me to make plugins ^-^

Made it over a year ago so its pretty jank, first time working with async stuff so yeah, extremely jank

Thanks very much! I shall have a read :)
 
  • Like
Reactions: mitgobla

caspar1500

Novice Member
Jun 24, 2017
45
18
58
20
i've made some games in the past year.
This is the newst one:

you can find my other projects on here.
And this is what i create for school the past month.

Good luck with your projects everyone!
 
  • Like
Reactions: Sulphate

Sulphate

Novice Member
Oct 20, 2017
201
157
58
England
i've made some games in the past year.
This is the newst one:

you can find my other projects on here.
And this is what i create for school the past month.

Good luck with your projects everyone!

That's pretty nice :) I've never really gotten into game development. Were you taught how to do this kinda stuff at school?
 

caspar1500

Novice Member
Jun 24, 2017
45
18
58
20
That's pretty nice :) I've never really gotten into game development. Were you taught how to do this kinda stuff at school?
Nope, i wanted to develop a game once i was 9 years old. So since then i have been learning to code, I just wachted some tutorial video's and that it really xD
 
  • Like
Reactions: Sulphate

Sulphate

Novice Member
Oct 20, 2017
201
157
58
England
Nope, i wanted to develop a game once i was 9 years old. So since then i have been learning to code, I just wachted some tutorial video's and that it really xD
Ah that's awesome! Great to see that it's paid off for you :) I learnt how to make websites by myself, and I can confirm that it was worth it! I hope you manage to make some epic games in the future ^-^
 
  • Like
Reactions: Buuuddy

Shayley

Novice Member
Jul 13, 2017
81
60
48
The Netherlands
I feel like a noob now (i am lol) but i have created a sort of game that's called 'Wakkenspel'. The game already exists but we had to create it to learn Java. I don't know the name in English, but it's a game with Penguins, Ice bears and Ice holes. You have dices that you have to throw and you have to make a code that randomly (math.Random does the job) throws the dices between the number 1 - 12 and the eyes of the dices randomly to 6. Then you have to check how many Ice bears, Penguins and Ice holes there are. Then you have buttons to check it and text fields to show if the answer was right or wrong. You can see that if you look at the eyes of the dice. But anyway, the code was like very long in Eclipse and it's been my best thing yet in Java.

I had to use JPanel and JFrame to make the start class:
Code:
public class Opstartklasse extends JFrame
{
    /**
     * @author Shayley
     * @version 2.0
     * @since 6 18 2019
     *
     */
    private static final long serialVersionUID = 1L;
   
    public static void main(String[] args)
    {
   
        JFrame window = new JFrame();
        window.setTitle("Wakken, Ijsberen & Pinguins");
        window.setSize(800, 600);
        window.setLocation(270, 60);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setContentPane(new Paneel() );
        window.setVisible(true);
        window.setResizable(false);
    }
}

Then i needed to make the JPanel (this is the part where you're going to create stuff in, so basically the window that you see after the 'start class'.)
Code:
public class Paneel extends JPanel
{
    /**
     * @author Shayley
     * @version 2.0
     * @since 6 18 2019
     */
private static final long serialVersionUID = 1L;

    
    private JLabel         spelTitel,
                        wak, beer,     ping, dobnum, tips, wak2, beer2, ping2,
                        tipLabel1, tipLabel2, gooitotaallabel, tipLabel3,    verkeerdLabel, tipLabel4,    goedtotaallabel, tipLabel5;
                        
    
    private JButton        btnNieuwSpel, btnchecken, btngooien, btnoplossing;
    
    
    private JTextField    waknum, waknum2, beernum, beernum2, pingnum, pingnum2, dobnuminvoer,
                        gooitotaal, verkeerdtotaal, goedtotaal;
    
    private Dobbelsteen         steen1, steen2, steen3, steen4, steen5, steen6, steen7, steen8, steen9, steen10, steen11, steen12;
    private int         wakchecken, beerchecken, pingchecken, verkeerdint, goedint;
    
    
    public Paneel()
    {
        setBackground(Color.BLACK);
        setLayout(null);
        
        spelTitel = new JLabel("Het Wakkenspel!");
        spelTitel.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 30));
        spelTitel.setBounds(265, 17, 500, 30);
        spelTitel.setForeground(Color.BLACK);
        add(spelTitel);
       
        btnNieuwSpel = new JButton("Nieuw Spel");
        btnNieuwSpel.setBounds(630, 18, 120, 25);
        btnNieuwSpel.setFont(new Font("Arial", Font.BOLD, 15));
        btnNieuwSpel.setForeground(Color.PINK);
        btnNieuwSpel.setBackground(Color.BLACK);
        btnNieuwSpel.addActionListener(new resetHandler() );
        add(btnNieuwSpel);

      /**
      * etc......
      */

You don't have to understand what the names are for the variables, it's Dutch :p But anyway, this is only a short bit of the code, i can't put the whole code on here!

I'm doing a study for app/web development by the way, we will learn more about Java when the holidays are over.
 

Attachments

  • Wakken, Ijsberen & Pinguins 7_16_2019 17_12_56.png
    Wakken, Ijsberen & Pinguins 7_16_2019 17_12_56.png
    22.9 KB · Views: 228
  • Like
Reactions: Sulphate

Sulphate

Novice Member
Oct 20, 2017
201
157
58
England
I feel like a noob now (i am lol) but i have created a sort of game that's called 'Wakkenspel'. The game already exists but we had to create it to learn Java. I don't know the name in English, but it's a game with Penguins, Ice bears and Ice holes. You have dices that you have to throw and you have to make a code that randomly (math.Random does the job) throws the dices between the number 1 - 12 and the eyes of the dices randomly to 6. Then you have to check how many Ice bears, Penguins and Ice holes there are. Then you have buttons to check it and text fields to show if the answer was right or wrong. You can see that if you look at the eyes of the dice. But anyway, the code was like very long in Eclipse and it's been my best thing yet in Java.

You don't have to understand what the names are for the variables, it's Dutch :p But anyway, this is only a short bit of the code, i can't put the whole code on here!

I'm doing a study for app/web development by the way, we will learn more about Java when the holidays are over.

That sounds pretty interesting ^-^ I made a version of draughts/checkers using the Java Swing library like you have here for university :)

Have you done anything with app/web development yet? Or will you learn more before trying to make stuff? :P
 
  • Like
Reactions: Shayley

Shayley

Novice Member
Jul 13, 2017
81
60
48
The Netherlands
That sounds pretty interesting ^-^ I made a version of draughts/checkers using the Java Swing library like you have here for university :)

Have you done anything with app/web development yet? Or will you learn more before trying to make stuff? :p
I have done HTML, CSS, JavaScript, PHP, SQL and Java for now. I want to try the C languages too + i want to be able to create apps for Android and IOS (i don't own a macbook tho, but you can do it with Xamarin i guess).
 
Members Online

Team online

Latest profile posts

Reesle wrote on ZachTart26's profile.
Welcome to the Official Cubecraft Forums! If you need help with something, feel free to DM me or a staff member anytime! Have a great day! :D
Reesle wrote on CalvinxKlein's profile.
Happy Birthday! 🎂
Watching the sun set... 🌅

1732368294873.png
Top Bottom