How to change card order of cards (numbers)?
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller
How to change card order of cards (numbers)?
Hi,
hoping all gurus are fine. but i am not good, because of headache, with a topic.
I am attaching a zip file, which you can understand what i wan't to do.
but it doesn't contains code, because this is just an example of what i need.
I have total 15 cards, (each cards contains different values on their custom property)
A,B,C and D are my main cards and each have many corresponding child cards.
A(1-3)
B(4-5)
C(6-10)
D(11-15)
if i type "A--C" and enter in field "Field" then the card order changes to
A(1-5)
B(6-7)
C(8-10)
D(11=15)
I tried this for 2 days. but failed to get the answer.
Thanks
-/-
Samjith
hoping all gurus are fine. but i am not good, because of headache, with a topic.
I am attaching a zip file, which you can understand what i wan't to do.
but it doesn't contains code, because this is just an example of what i need.
I have total 15 cards, (each cards contains different values on their custom property)
A,B,C and D are my main cards and each have many corresponding child cards.
A(1-3)
B(4-5)
C(6-10)
D(11-15)
if i type "A--C" and enter in field "Field" then the card order changes to
A(1-5)
B(6-7)
C(8-10)
D(11=15)
I tried this for 2 days. but failed to get the answer.
Thanks
-/-
Samjith
- Attachments
-
- test.zip
- (1.05 KiB) Downloaded 291 times
Re: How to change card order of cards (numbers)?
NONE of your cards has a name or custom property!?
No idea what you are trying to do...
No idea what you are trying to do...
Re: How to change card order of cards (numbers)?
Hi.
I am not in v.8 yet. Can you restate your problem? I cannot understand the issue at all, or what your original post means.
Craig Newman
I am not in v.8 yet. Can you restate your problem? I cannot understand the issue at all, or what your original post means.
Craig Newman
Interchange card and sub-card
Hi All
I have three main cards and each main card three or more sub card, I have an textfield for passing the input, when I enter the input as 1to3 in text field then interchange the first main card and sub card by third main card and sub card. is it possible
I have three main cards and each main card three or more sub card, I have an textfield for passing the input, when I enter the input as 1to3 in text field then interchange the first main card and sub card by third main card and sub card. is it possible

--
Thanks
Shalu S
Thanks
Shalu S
Re: How to change card order of cards (numbers)?
Hi Shalu,
I merged your two topics, please do not simply open a new thread
if noone seems to understand your previous one!
I still do not have any idea what you are after, and there are no
SUB cards (like a SUB stack), just cards!
Best
Klaus
I merged your two topics, please do not simply open a new thread
if noone seems to understand your previous one!

I still do not have any idea what you are after, and there are no
SUB cards (like a SUB stack), just cards!
Best
Klaus
Re: How to change card order of cards (numbers)?
As Klaus said, "What are sub-cards?"
Do you mean simply that a certain card is related in some way to three other cards? So if you enter "1to3" onto card 1, card 3 appears? But then how could more than one "other" card appear?
Are we sure we know what is meant by "card"?
Craig
Do you mean simply that a certain card is related in some way to three other cards? So if you enter "1to3" onto card 1, card 3 appears? But then how could more than one "other" card appear?
Are we sure we know what is meant by "card"?
Craig
Re: How to change card order of cards (numbers)?
Before we can help you work out the code, we need to understand what you would like to do. One of the problems is the vocabulary - LiveCode does not have a concept of subcards but we can work that out later. Using your terms, is this what you are trying to do?
See if this is correct:
Your cards are arranged like this:
A - has 3 subcards
B - has 2 subcards
C has 5 subcards
you want to be able to swap subcards as a group from one letter to another
A..C would swap subcards so you would get this:
A - now has C's subcards
B - still has its own
C - has A's subcards
Is that a correct understanding of what you want to do?
See if this is correct:
Your cards are arranged like this:
A - has 3 subcards
B - has 2 subcards
C has 5 subcards
you want to be able to swap subcards as a group from one letter to another
A..C would swap subcards so you would get this:
A - now has C's subcards
B - still has its own
C - has A's subcards
Is that a correct understanding of what you want to do?
Cyril Pruszko
https://sites.google.com/a/pgcps.org/livecode/
https://sites.google.com/a/setonhs.org/app-and-game-workshop/home
https://learntolivecode.com/
https://sites.google.com/a/pgcps.org/livecode/
https://sites.google.com/a/setonhs.org/app-and-game-workshop/home
https://learntolivecode.com/
Re: How to change card order of cards (numbers)?
Firstly, i want to say that, i am not shalu, he is my colleague. but we are doing the same project.Hi Shalu,
I merged your two topics, please do not simply open a new thread
if noone seems to understand your previous one!
I still do not have any idea what you are after, and there are no
SUB cards (like a SUB stack), just cards!
Best
Klaus
Yes, that is what i meant.See if this is correct:
Your cards are arranged like this:
A - has 3 subcards
B - has 2 subcards
C has 5 subcards
you want to be able to swap subcards as a group from one letter to another
A..C would swap subcards so you would get this:
A - now has C's subcards
B - still has its own
C - has A's subcards
Is that a correct understanding of what you want to do?
I know LC have no sub cards, but i want to make them sub cards (just assumption),
because i need to move the cards to
A(1-3)--here 1 is A and 2,3 are child of A
B(4-5)-- 4 is B and 5 is child of B
C(6-10) 6 is C and 7,8,9,10 are child of C
D(11-15) 11 is D and 12,13,14,15 are child of D
Why i made as child because, i need to move cards with some cards
if i type "Swap A--C" and enter in field "Field" then the card order changes to
A(1-5)
B(6-7)
C(8-10)
D(11=15)
This is what i tried so far but failed. I don't know whether you can understand what i tried
Code: Select all
if char 1 to 4 of command is "swap" and the char 5 to -1 of command is not empty then
if charToNum(the char 5 of command) < charToNum(the char 6 of command) then ---So no problem with swapAC/swapCA
put char 5 of command into First_Part_to_Swap --A
put char 6 of command into Second_Part_to_Swap--C
else
put char 6 of command into First_Part_to_Swap--C
put char 5 of command into Second_Part_to_Swap--A
end if
put 0 into First_Card_counter
put 0 into Second_Card_counter
repeat with i =1 to the number of cards
if the My_Part_name of card i is First_Part_to_Swap and the is_part of the card i is true then--My_Part_name contains A/B/C etc--is_part means my main card
put the number of card i into First_Card_Numb
put the short name of card i into temp1
put the Finish_Row of card i into temp1_finish
put the Start_Row of card i into temp1_start
put the Horizontal_skip of card i into temp1_hori
put the Vertical_skip of card i into temp1_ver
put the My_Part_name of card i into temp1_part_alpha
add 1 to First_Card_counter
else if the Part_name of card i is temp1 and the is_Label of card i is true then--is_Label means my sub card
add 1 to First_Card_counter
end if ---------This is for A
if the My_Part_name of card i is Second_Part_to_Swap and the is_part of the card i is true then
put the number of card i into Second_Card_Num
put the short name of card i into temp2
put the Finish_Row of card i into temp2_finish
put the Start_Row of card i into temp2_start
put the Horizontal_skip of card i into temp2_hori
put the Vertical_skip of card i into temp2_ver
put the My_Part_name of card i into temp2_part_alpha
add 1 to Second_Card_counter
else if the Part_name of card i is temp2 and the is_Label of card i is true then
add 1 to Second_Card_counter
end if --This is for C
end repeat
repeat with i = Second_Card_Num to (Second_Card_Num + Second_Card_counter-1)
if the Part_name of card i is temp2 and the is_part of card i is true then
set the number of card i to First_Card_Numb
set the Finish_Row of card First_Card_Numb to temp1_finish
set the Start_Row of card First_Card_Numb to temp1_start
set the Horizontal_skip of card First_Card_Numb to temp1_hori
set the Vertical_skip of card First_Card_Numb to temp1_ver
set the My_Part_name of card First_Card_Numb to temp1_part_alpha
put 0 into tmp
else if the Part_name of card i is temp2 and the is_Label of card i is true then
add 1 to tmp
set the number of card i to First_Card_Numb + tmp
end if
end repeat
repeat with i = (First_Card_Numb+ Second_Card_counter) to First_Card_Numb + Second_Card_counter + First_Card_counter -1
if the Part_name of card i is temp1 and the is_part of card i is true then
set the number of card i to y--Second_Card_Num
set the Finish_Row of card y to temp2_finish
set the Start_Row of card y to temp2_start
set the Horizontal_skip of card y to temp2_hori
set the Vertical_skip of card y to temp2_ver
set the My_Part_name of card y to temp2_part_alpha
put 0 into tmp
else if the Part_name of card i is temp1 and the is_Label of card i is true then
add 1 to tmp
set the number of card i to y + tmp
end if
end repeat
end if
Re: How to change card order of cards (numbers)?
Hi Samjith,
sorry, for naming you Shalu, but it would be good if you could communicate a bit
so we do not have different threads for the same problem!
I think your script is unneccessarily complicated, since I still do not have any idea about the logics behind your wish!?
Hint:
A clever naming scheme often make things easier to handle.
So can you please NAME your cards like:
A_1
A_2
A_3
B_1
B_2
etc.
And then explain again what you are trying to do with these NAMES in a little example?
Best
Klaus
sorry, for naming you Shalu, but it would be good if you could communicate a bit
so we do not have different threads for the same problem!
I think your script is unneccessarily complicated, since I still do not have any idea about the logics behind your wish!?
Hint:
A clever naming scheme often make things easier to handle.
So can you please NAME your cards like:
A_1
A_2
A_3
B_1
B_2
etc.
And then explain again what you are trying to do with these NAMES in a little example?
Best
Klaus
Re: How to change card order of cards (numbers)?
A_1
A_2
A_3
B_1
B_2
C_1
C_2
C_3
C_4
C_5
D_1
D_2
D_3
D_4
D_5
Are in order 1 to 15, when i type "swapAC" in field, i want to see them look like this
C_1
C_2
C_3
C_4
C_5
B_1
B_2
A_1
A_2
A_3
D_1
D_2
D_3
D_4
D_5
A_2
A_3
B_1
B_2
C_1
C_2
C_3
C_4
C_5
D_1
D_2
D_3
D_4
D_5
Are in order 1 to 15, when i type "swapAC" in field, i want to see them look like this
C_1
C_2
C_3
C_4
C_5
B_1
B_2
A_1
A_2
A_3
D_1
D_2
D_3
D_4
D_5
Re: How to change card order of cards (numbers)?
AHA!
OK, thanks, NOW I can and will think about this.

OK, thanks, NOW I can and will think about this.
Re: How to change card order of cards (numbers)?
If you name your cards as Klaus suggested, your task becomes easier.
e.g.
A-1
A-2
A-3
B-4
B-5
C-6
C-7
C-8
etc.
You would set the itemDelimiter to the separator (either _ or -) and treat each name as having 2 items - the letter (A,B,C) and the number.
When you go to swap, you loop through all the cards and change the first item of each line (the letter). Then you sort the lines, then loop through all of them changing the second items (the numbers) to be consecutively numbered.
Does that make sense? Do you need help with the code?
e.g.
to swap A with C:
1. move the children (subcards) from one to the other:
loop through every card -
if first item = "A" then change to a "C"
if first item = "C" then change to a "A"
2. Sort them so they are in the new order
3. Now renumber them to be consecutive
loop through every card - (put 1 into i)
change item 2 to i
increment i (add 1 to i)
Is this what you had in mind?
note: in your original example, the cards were numbered consecutively. The code above is for that scenario.
if you want them numbered differently, (in your last example) then you do not need to do the sort and renumbering steps above (2 and 3)
e.g.
A-1
A-2
A-3
B-4
B-5
C-6
C-7
C-8
etc.
You would set the itemDelimiter to the separator (either _ or -) and treat each name as having 2 items - the letter (A,B,C) and the number.
When you go to swap, you loop through all the cards and change the first item of each line (the letter). Then you sort the lines, then loop through all of them changing the second items (the numbers) to be consecutively numbered.
Does that make sense? Do you need help with the code?
e.g.
to swap A with C:
1. move the children (subcards) from one to the other:
loop through every card -
if first item = "A" then change to a "C"
if first item = "C" then change to a "A"
2. Sort them so they are in the new order
3. Now renumber them to be consecutive
loop through every card - (put 1 into i)
change item 2 to i
increment i (add 1 to i)
Is this what you had in mind?
note: in your original example, the cards were numbered consecutively. The code above is for that scenario.
if you want them numbered differently, (in your last example) then you do not need to do the sort and renumbering steps above (2 and 3)
Cyril Pruszko
https://sites.google.com/a/pgcps.org/livecode/
https://sites.google.com/a/setonhs.org/app-and-game-workshop/home
https://learntolivecode.com/
https://sites.google.com/a/pgcps.org/livecode/
https://sites.google.com/a/setonhs.org/app-and-game-workshop/home
https://learntolivecode.com/
Re: How to change card order of cards (numbers)?
Does that make sense? Do you need help with the code?
Sorry, I am very much confused. Could you help me with the code?
Re: How to change card order of cards (numbers)?
## Preparation (do ONCE)
Of course you can get with that code a full new order at once by
- Name each card, don't touch the name again (read it only)
=> names A_1 ... C_8 and more of that type - name the one card of your actions with "TOP"
- make (if not already there) on card "TOP"
=> a field "Swap"
=> a field "OUT"
=> a field "fullList" (containing all used chars = ABCD ...)
=> a button "Action" with the following script
Code: Select all
## Actions
-- newSort "ABCD" --> resets the sort
-- newSort "ACBD" --> swaps BC
on newSort sortCode
set itemdel to "_"
sort cards by offset(item 1 of the short name of this card,sortCode)
set itemdel to comma
end newSort
-- swapCards is based by default on "ABCD"
-- if you wish to do a repeated swap then
-- keep track of fullList (by fld "fullList")
on swapCards
lock screen; lock messages
put numTochar(0) into c0
-- put fld "fullList" into fullList --> for repeated swaps
put "ABCD" into fullList --> swap based on natural order
put upper(char -2 of fld "swap") into c1
put upper(char -1 of fld "swap") into c2
if c1 is in fullList and c2 is in fullList then
replace c1 with c0 in fullList
replace c2 with c1 in fullList
replace c0 with c2 in fullList
-- put fullList into fld "fullList"
newSort fullList
go card "TOP"
put fullList & cr & getOrder() into fld "OUT"
else
answer "Error: Not all SwapChars are in " & \
quote & fullList "e & "..."
end if
unlock screen; unlock messages
end swapCards
on mouseUp
swapCards
end mouseUp
-- for checking the new sort order in development
function getOrder
repeat with i=1 to the num of cds
put cr & the short name of card i after s
end repeat
return char 2 to -1 of s
end getOrder
Code: Select all
on mouseUp
lock screen; lock messages
put "CBDA" into newOrder -- or read it from a field
newSort newOrder
go card "TOP"
put newOrder & cr & getOrder() into fld "OUT"
unlock screen; unlock messages
end mouseUp
shiftLock happens
Re: How to change card order of cards (numbers)?
This is the base code for changing the name of the cards. This is as simple as it gets
You will have to modify it to handle your card names and your input for the letters to swap. I hard-coded the "A" and "C" but you should be able to make it more generic (i.e. get the letters from a field, put them into variables) and use those variables in the "if" statements. I assume that you know enough LiveCode to do that.
(this assumes the cards are named A-1 , A-2 , A-3 , B-1 ,etc)
Then you can sort the cards to get them back in alphabetical order.
You will have to modify it to handle your card names and your input for the letters to swap. I hard-coded the "A" and "C" but you should be able to make it more generic (i.e. get the letters from a field, put them into variables) and use those variables in the "if" statements. I assume that you know enough LiveCode to do that.
(this assumes the cards are named A-1 , A-2 , A-3 , B-1 ,etc)
Code: Select all
on mouseUp
repeat with n=1 to the number of cards of this stack
set itemDelimiter to " "
put the short name of card n into theName
if char 1 of theName = "A" then
put "C" into char 1 of theName
else
if char 1 of theName = "C" then
put "A" into char 1 of theName
end if
end if
set the name of card n to theName
end repeat
Cyril Pruszko
https://sites.google.com/a/pgcps.org/livecode/
https://sites.google.com/a/setonhs.org/app-and-game-workshop/home
https://learntolivecode.com/
https://sites.google.com/a/pgcps.org/livecode/
https://sites.google.com/a/setonhs.org/app-and-game-workshop/home
https://learntolivecode.com/